Php 使用不同的codeception环境
我正在使用Codeception为API进行一些单元测试。其思想是确保每个API调用都返回预期的响应代码和所需格式的JSON对象 我遇到的问题是,根据服务器是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
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