Php 在codeception中包含通用测试用例

Php 在codeception中包含通用测试用例,php,codeception,Php,Codeception,我有多个类似的网站,我想测试。以下是当前的方法: 克隆现有的codeception项目 调整变量 如果需要,添加一些额外的特定测试用例 这很好,但有一个问题。如果通用测试用例发生变化,这意味着我必须进入每个项目并进行更改。所以我更愿意看到的是在每个项目中包含一个通用的顶级测试用例,并用一个参数调用它 我尝试用一个简单的include()语句来实现,但不幸的是,这不起作用。我如何才能做到这一点 下面是我最初尝试的一些代码: /home/tests/site1/tests/acceptance/is

我有多个类似的网站,我想测试。以下是当前的方法:

  • 克隆现有的codeception项目
  • 调整变量
  • 如果需要,添加一些额外的特定测试用例
  • 这很好,但有一个问题。如果通用测试用例发生变化,这意味着我必须进入每个项目并进行更改。所以我更愿意看到的是在每个项目中包含一个通用的顶级测试用例,并用一个参数调用它

    我尝试用一个简单的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
    

    可能include不是正确的方法,但是有什么更好的方法呢?

    您可以使用页面对象来实现这一点

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

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

    要访问page dir下声明的任何选择器和/或方法,可以使用以下行进行访问

    使用Page\常量作为ConstantsPage

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

    文件名页面::$selectorName

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

    $settings=新设置页面($I)

    $settings->methodName()

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

    self::selectorName

    self::methodName()


    希望这会有所帮助。

    请提供不起作用的代码,因为我们无法继续说明您当前的问题。添加了一些代码为什么不使用页面对象并在页面对象中声明函数。用参数调用它。你有一些示例代码吗?