Codeception, architecture Global and Suite Helpers / PHP


Codeception, architecture Global and Suite Helpers / PHP

我正在学习这个神奇的Test Framework (Codeception)我已经写了一堆测试作为练习,所有的都正确通过了

显然,我遇到了同样的问题,关于架构和测试的可重用性,以及如何使用不同的类来构建测试的最佳实践。

Cest and Cept:

我如何在文档上阅读测试ceptcest的类型。我试着写了两种测试,但我所做的数量仍然不明白我什么时候才能最好地利用它们。我在文档中读到的唯一一件事是,如果您的测试太长,创建Cest Class是最好的方法。

全球助手

要为我的登录表单创建一个functional test,我这样构建它:

$I = new TestGuy($scenario);
$I->am('A member');
$I->wantTo('Login in the application');
$I->amOnPage('/');
$I->signIn(); // This custom method belongs to a helper
$I->seeInCurrentUrl('/home');

复习SignIn方法

    /**
     * Class TestHelper
     *
     * @package Codeception'Module
     */
 class TestHelper extends 'Codeception'Module
 {
    /**
     * Sign In a user
     */
    public function signIn()
    {
        $email = 'test@test.com';
        $password = 'Hello123';
        $username = 'user3';
        // create a dummy account
        $this->haveAnAccount(compact('email','password','username'));
        $I = $this->getModule('Laravel4');
        $I->fillField('.navbar-collapse input[name="email"]',$email);
        $I->fillField('.navbar-collapse input[name="password"]',$password);
        $I->click('LOG IN');
    }
}

测试正常通过。

现在如果我想在我的functional tests中使用signIn()方法很简单,只要使用它。

当我不得不用Selenium创建Acceptance测试时,问题出现了,它需要完全相同的过程来让用户登录,我需要重用完全相同的方法,在这种情况下,我不能用于接受。

那么什么是最好的实践来分享和使全局的这个帮手?

这个帮助器已经是"全局的"。您所需要做的就是将这个帮助器添加到所需的套件配置- accept .suite.yml:

class_name: AcceptanceTester
modules:
    enabled: [AcceptanceHelper, YourHelper]
然后不要忘记运行
php codeception.phar build