在CodeCeption中将变量从测试方法传递给另一个

时间:2018-03-12 11:47:14

标签: php codeception

我正在使用Codeception来测试3个API:

  1. 发表评论
  2. 回复评论
  3. 从帖子中获取所有评论
  4. 第一个API返回刚插入数据库的注释的ID。我想将评论ID传递给第二种测试方法。

    在PHPUnit中我会通过从第一个方法返回commentId并使用@depends注释第二个方法来做到这一点,但在Codeception中@depends不会从第一个方法发送返回的值。

    有没有办法在不将两个测试放在同一个方法中的情况下发送值?

    我刚开始使用Codeception,所以我可能会错过一些有价值的信息。

2 个答案:

答案 0 :(得分:1)

Codeception在同一个内存空间中运行所有测试,因此您只需使用 GLOBAL 关键字:

/**
 * @test1
 */
public function testOne(){
    global $hello;
    $hello = "Hello!";
}

/**
 * @test2
 */
public function testTwo(){
   global $hello;
   $this->assertEquals("Hello!", $hello);
}

答案 1 :(得分:0)

这很好用,非常简单。请注意,测试中不应包含的功能应为protected

 protected $var1;
 protected $var2;

public function test1(AcceptanceTester $I){
    $var1 = "Variable1";
    $var2 = "Variable2";
    $this->pass_variable($var1,$var2);
}

public function test2(AcceptanceTester $I){
    $I->doSomethingWithPassedVars($this->var1, $this->var2);
}

protected function pass_variable($var1 = "", $var2 = ""){
    $this->var1 = $var1;
    $this->var2 = $var2;
}