如何使用许多不同的输入集编写相同的代码验收测试用例

时间:2015-09-13 21:32:42

标签: codeception

在代码验收测试中,如何为许多不同的输入集运行/编写相同的测试用例。

这是我的样本验收测试(我正在使用页面对象oncept)

loginCept.php代码

$I = new AcceptanceTester($scenario);
$I->wantTo('perform actions and see result');
$I->login($I,$m);  

Acceptance.php文件

class Acceptance extends \Codeception\Module
{
    public function login($I)
    {
        $I->amOnPage(login::$loginIndex);
        $I->wait(2);
        $I->fillField(login::$userName,"test@gmail.com");
        $I->fillField(login::$password,"test");
        $I->click(login::$submitButton);
        $I->see(login::$assertionWelcome);
        $I->wait(2);
        $I->click(login::$logoutLink);
    }
}                  

如何在验收测试中使用多组输入运行相同的登录。

但是,我尝试通过将数组值作为输入参数调用for循环中的测试用例来传递数组中的输入。在acceptance.php中,可以使用if循环传递多组输入。

这将测试仅作为具有不同断言的1个测试用例运行。 但是,它运行测试用例,直到任何输入/断言失败。如果任何断言都失败了,那么测试用例就会停止执行。说测试用例失败了。

1 个答案:

答案 0 :(得分:0)

您可以将参数传递到登录功能,就像使用任何php函数一样:

loginCept.php代码

$I = new AcceptanceTester($scenario);
$I->wantTo('perform actions and see result');
$I->login($I,"test@gmail.com","test");  

Acceptance.php文件

class Acceptance extends \Codeception\Module
{
    public function login($I,$username,$password)
    {
        $I->amOnPage(login::$loginIndex);
        $I->wait(2);
        $I->fillField(login::$userName,$username);
        $I->fillField(login::$password,$password);
        $I->click(login::$submitButton);
        $I->see(login::$assertionWelcome);
        $I->wait(2);
        $I->click(login::$logoutLink);
    }
}        

然后,您希望为要测试的每个登录方面创建一个单独的cept。

修改

您正在寻找与通过多个断言运行的一个测试相关的内容,这打破了自动化测试的惯例。每个测试(或在这种情况下都是cept)应该只测试一个方面。例如,在登录时,您可能有一个用于无效的用户名,无效的密码,太多的尝试等等......然后当/如果一个测试失败,您作为开发人员确切地知道哪个方面失败并且哪个方面继续通过。如果所有方面都包含在一个测试中,那么在开始调试之前,您作为开发人员并不了解全貌。