从 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