从 PHP 创建和 运行 代码接受测试
Create and run codeception tests from PHP
我知道 Codeception 是为命令行使用而设计的。但由于它完全基于 PHP,我很确定必须有一种方法 dynamically/temporarily 通过 PHP 创建测试。
在我的例子中,我正在从数据库中获取验收测试步骤,并且需要 运行 使用 Codeception 进行动态测试。我更喜欢一种测试它的方法,而不必总是生成和删除临时测试文件夹并 运行 在命令行上使用 codeception 命令。
问题是 Codeception 在创建 cest 时会动态生成一堆配置文件和脚本。我无法使用 Codeception 类.
使其工作
有谁知道实现此目标的最佳方法是什么?
我认为最好的方法是实现自定义测试加载器,如 https://codeception.com/docs/07-AdvancedUsage#Formats
中所述
您仍然需要在每个套件中使用占位符文件来启动加载程序,但可以从数据库加载测试。
文档副本:
In addition to the standard test formats (Cept, Cest, Unit, Gherkin)
you can implement your own format classes to customise your test
execution. Specify these in your suite configuration:
formats:
- \My\Namespace\MyFormat
Then define a class which implements the LoaderInterface
namespace My\Namespace;
class MyFormat implements \Codeception\Test\Loader\LoaderInterface
{
protected $tests;
protected $settings;
public function __construct($settings = [])
{
//These are the suite settings
$this->settings = $settings;
}
public function loadTests($filename)
{
//Load file and create tests
}
public function getTests()
{
return $this->tests;
}
public function getPattern()
{
return '~Myformat\.php$~';
}
}
查看现有加载程序 类 以获取灵感:https://github.com/Codeception/Codeception/tree/4.0/src/Codeception/Test/Loader
我知道 Codeception 是为命令行使用而设计的。但由于它完全基于 PHP,我很确定必须有一种方法 dynamically/temporarily 通过 PHP 创建测试。
在我的例子中,我正在从数据库中获取验收测试步骤,并且需要 运行 使用 Codeception 进行动态测试。我更喜欢一种测试它的方法,而不必总是生成和删除临时测试文件夹并 运行 在命令行上使用 codeception 命令。
问题是 Codeception 在创建 cest 时会动态生成一堆配置文件和脚本。我无法使用 Codeception 类.
使其工作有谁知道实现此目标的最佳方法是什么?
我认为最好的方法是实现自定义测试加载器,如 https://codeception.com/docs/07-AdvancedUsage#Formats
中所述您仍然需要在每个套件中使用占位符文件来启动加载程序,但可以从数据库加载测试。
文档副本:
In addition to the standard test formats (Cept, Cest, Unit, Gherkin) you can implement your own format classes to customise your test execution. Specify these in your suite configuration:
formats: - \My\Namespace\MyFormat
Then define a class which implements the LoaderInterface
namespace My\Namespace; class MyFormat implements \Codeception\Test\Loader\LoaderInterface { protected $tests; protected $settings; public function __construct($settings = []) { //These are the suite settings $this->settings = $settings; } public function loadTests($filename) { //Load file and create tests } public function getTests() { return $this->tests; } public function getPattern() { return '~Myformat\.php$~'; } }
查看现有加载程序 类 以获取灵感:https://github.com/Codeception/Codeception/tree/4.0/src/Codeception/Test/Loader