在Codeception套件完成后运行自定义代码

Sac*_*cha 6 php codeception

我知道用于设置测试环境等的_bootstrap.php文件,但是我正在寻找一种在整个测试套件完成后运行一些代码的方法.

请注意,我并不是在寻找一种在单个类之后运行代码的方法,例如_after,但是在所有类之后.

有没有办法实现这个目标?

Sac*_*cha 7

实际上我自己设法解决了这个问题,如果有人感兴趣的话,这是怎么回事.

我在_support中创建了一个新的帮助器类.

<?php

class DataHelper extends \Codeception\Module
{
    public function _beforeSuite()
    {
        // Set up before test suite
    }

    public function _afterSuite()
    {
        // Tear down after test suite
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以在任何套件配置(.yml文件)中将其作为模块启用,如下所示:

modules:
    enabled:
        - DataHelper
Run Code Online (Sandbox Code Playgroud)


Luí*_*ruz 6

如果你想在所有套房中分享相同的方法,@ Sacha的解决方案特别有用.

如果您正在寻找一种方法来定义特定套件的方法(或者如果您希望每个套件使用不同的方法),则可以直接在Helper类套件中定义这些方法.

例如,如果要_afterSuite为Acceptance Suite 定义方法,只需转到support/AcceptanceHelper.php并定义那些方法即可.例如:

<?php
namespace Codeception\Module;

// here you can define custom actions
// all public methods declared in helper class will be available in $I

class AcceptanceHelper extends \Codeception\Module
{
    public function _afterSuite() {
        die('everything done');
    }
}
Run Code Online (Sandbox Code Playgroud)