在代码中包含通用测试用例

时间:2016-12-08 16:41:10

标签: php codeception

我有多个类似的网站,我想测试。这是目前的做法:

  1. 克隆现有的代码项目
  2. 调整变量
  3. 如果需要,添加一些其他特定测试用例
  4. 这很好用,但有一个问题。如果一般测试用例发生变化,则意味着我必须进入每个项目并进行更改。所以我更愿意看到的是在每个项目中包含通用顶级测试用例并使用参数调用它的方法。

    我尝试使用简单的include()语句,但遗憾的是这不起作用。想法我怎么能做到这一点?

    这是我最初尝试的一些代码:

    /home/tests/site1/tests/acceptance/isOnlineCept.php

    include("../1generic_tests/isonline.php");
    $I = new AcceptanceTester($scenario);
    $I->am('user');
    $I->wantTo('see the content of the site');
    $I->lookForwardTo('see the homepage');
    $I->amOnPage('/');
    $I->see("Tech, Geek and Rock'n'Roll");
    

    我包含的文件看起来像这样

    $I = new AcceptanceTester($scenario);
    $I->am('user');
    $I->wantTo('see the content of the site');
    $I->lookForwardTo('see the homepage');
    $I->amOnPage('/');
    $I->see('something else');
    

    不幸的是,它失败并出现此错误

    [PHPUnit_Framework_Exception] Undefined index: class
    

    也许包含不是正确的方法,但是什么是更好的方式?

1 个答案:

答案 0 :(得分:1)

您可以使用Page Object。

使用Page Object创建一个Constants.php文件,您可以在其中定义所有选择器。

创建另一个文件,您可以在其中执行所有常见操作。例如。 Settings.php文件,您可以根据自己的要求拥有所有方法。您也可以使用参数定义它。

要访问页面目录下声明的任何选择器和/或方法,可以使用以下行访问。

  

使用Page \ Constants作为ConstantsPage;

从任何特定文件访问任何选择器

  

FileNamePage :: $ selectorName;

要访问任何方法,请首先创建对象,然后调用该方法。 例如。

  

$ settings = new SettingsPage($ I)

     

$设置 - >方法名();

在同一文件中调用方法和/ pr选择器。

  

自:: selectorName;

     

自::方法名();

希望这会有所帮助。