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

Pass variable from a test method to another in CodeCeption

我正在使用 Codeception 测试 3 APIs:

  1. 写 post 评论
  2. 回复评论
  3. 获取来自 post
  4. 的所有评论

第一个API returns刚刚插入数据库的评论ID。我想将评论Id传递给第二个测试方法。

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

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

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

Codeception 在同一内存中运行所有测试 space,因此您可以只使用 GLOBAL 关键字:

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

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

这很好用而且非常简单。注意测试中不应该包含的函数应该是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;
}