如何在代码接收中使用带有@after注释的数据提供者

时间:2020-03-13 09:51:59

标签: php automated-tests codeception dataprovider

我有问题。 我具有dataprovider的特征:

trait testingData{
 protected function dataProvider(){
  return[['example' => 1],
  ['example' => 2];
 }

  protected function testData(MyTester $I, Example $e){
   $I->testData($e['example'];
 }

}

我有很多这样的特质。

然后我有一个大班,将这些特征综合在一起

class Importer{

use "namespace of testingData trait";



//setters, getters, some parameters...


use testingData;


/**
* @dataProvider dataProvider
*/
public startTest(MyTester $I, Example $e){
 $this->testData($I,$e);

}


/**
* @dataProvider anotherDataProvider
*/
public startAnotherTest(MyTester $I, Example $e){
 $this->testAnotherData($I,$e);

}

}

现在在我的测试中,我尝试使用@after注释调用这两个测试,测试扩展了importer类,因此看起来像这样:

class test extends Importer{

/**
* @after startTest
* @after startAnotherTest
*/
public function prepareForm(FormTester $I, Example $e){
 $I->amOnPage("/somewhere");
...
}

}

那么,哪里出问题了?

我必须向您介绍测试步骤:

  1. 启动prepareForm-确定
  2. 在startTest之后开始@@-第一行
  3. 失败,因为它在@startAnotherTest之后启动,并且他使用具有不同数据和dataKeys的不同dataProvider

我需要采取哪些步骤:

  1. 启动prepareForm-确定
  2. 在startTest之后开始@@-第一行
  3. 在startTest之后开始@@-第二行
  4. 在startAnotherTest之后@start @-第一行(不同的dataprovider) ...

我尝试过什么?

我尝试在构造方法中的Importer类中创建$ this-> myDataProvider = new Example(dataProvider);并发送方法testData($ I,$ this-> myDataProvider [0])。但是在这里,我只能使用dataProvider的特定一行。

有可能吗?

感谢答案

0 个答案:

没有答案
相关问题