Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用不同的codeception环境_Php_Unit Testing_Codeception - Fatal编程技术网

Php 使用不同的codeception环境

Php 使用不同的codeception环境,php,unit-testing,codeception,Php,Unit Testing,Codeception,我正在使用Codeception为API进行一些单元测试。其思想是确保每个API调用都返回预期的响应代码和所需格式的JSON对象 我遇到的问题是,根据服务器是localhost、测试服务器还是生产服务器,我需要使用不同的URL 我无法使用$\u SERVER['SERVER\u NAME']的值,因为测试不是通过web浏览器运行的 在这里,他们解释了一些环境可以通过修改配置文件来设置。该文档没有解释如何修改配置文件以在您自己的单元测试中使用它 我想设置一些环境,比如local,test,prod

我正在使用Codeception为API进行一些单元测试。其思想是确保每个API调用都返回预期的响应代码和所需格式的JSON对象

我遇到的问题是,根据服务器是
localhost
、测试服务器还是生产服务器,我需要使用不同的URL

我无法使用
$\u SERVER['SERVER\u NAME']
的值,因为测试不是通过web浏览器运行的

在这里,他们解释了一些环境可以通过修改配置文件来设置。该文档没有解释如何修改配置文件以在您自己的单元测试中使用它

我想设置一些环境,比如
local
test
production
,然后在我的单元测试类中,了解要使用的
url
。每个环境都有不同的URL

我读过文档,但找不到方法


您知道实现我需要的功能的方法吗?

请确保您的codeception版本至少为1.8,因为只有1.8才支持该环境

下面是我们在
api.suite.yml
中指定的codeception设置,其中PhpBrowser和REST模块已为BDD和api测试启用:

...
env:
    local:
        modules:
            config:
                PhpBrowser:
                    url: http://local.example.com/
                REST:
                    url: http://local.example.com/v1/
    integration:
        modules:
            config:
                PhpBrowser:
                    url: http://integration.example.com/
                REST:
                    url: http://integration.example.com/v1/
    staging:
        modules:
            config:
                PhpBrowser:
                    url: http://staging.example.com/
                REST:
                    url: http://staging.example.com/v1/

当运行codecept命令时,您需要提供一个
--env
选项来指定测试应该使用的环境。

同意,尽管子配置与父配置(codeception.yml)合并,但文档不清楚环境配置是否是特定于套件的,也可以在父配置中配置环境。以下是我为此编写的教程:。环境可以是任何东西,不同的浏览器,不同的版本,不同的数据等等。要清楚,这是从模块开始的整个树:。。。启用:。。。配置…是否可以在一个测试中针对多个环境进行测试?@AlxVallejo,是的,添加其他--env参数,如:
codecept运行testSuiteName--env local--env integration--env staging
。但是,如果您想要特定的测试,请从测试用例开始。然后:
codeept运行pathToTestFileWithExtension.php:testMethodName--env local--env integration--env staging