【问题标题】:Preventing asserts from failing tests in Codeception防止断言在 Codeception 中的测试失败
【发布时间】:2014-07-08 15:52:38
【问题描述】:

我刚刚开始探索自动化测试,特别是 Codeception,这是我在网页设计工作室的 QA 工作的一部分。我遇到的最大问题是,只要断言失败,Codeception 就会失败测试,​​无论它放在代码中的什么位置。如果我的互联网连接中断或太慢,事情就会变得困难。我想知道是否有方法可以更好地控制 Codeception 何时失败并终止测试会话,或者更好的方法是在断言失败时重试或执行不同的命令块或循环。例如,我想做类似以下的事情:

if ( $I->see('Foo') )
{
     echo 'Pass';
}
else
{
     echo 'Fail';
}

有没有人有任何建议可以帮助实现这一目标?

【问题讨论】:

    标签: codeception


    【解决方案1】:

    您可以使用条件断言:

       $I->canSeeInCurrentUrl('/user/miles');
       $I->canSeeCheckboxIsChecked('#agree');
       $I->cantSeeInField('user[name]', 'Miles');
    

    codeception documentation 说:

    有时您不希望在断言失败时停止测试。也许您有一个长时间运行的测试,并且您希望它运行到最后。在这种情况下,您可以使用条件断言。每个see方法都有对应的canSee方法,dontSee也有cantSee方法。

    【讨论】:

    • 请注意,目前在 PhpStorm 中运行 Codeception 时这不起作用。 .我有两个失败的 dontSee() 断言。如果我将它们更改为 cantsee(),测试将继续,但没有迹象表明这些断言失败。它可以从命令行正常工作。
    【解决方案2】:

    我不确定,如果我理解正确,但我认为,你应该尝试使用 Cest。

    $ php codecept.phar generate:cest suitename CestName
    

    所以你可以在一个测试函数中编写一个测试。如果测试失败,它将中止。您还可以配置 codeception,使其不会中止并在所有测试结束时在摘要中仅显示一个失败的测试。

    请参阅文档中的此处:https://github.com/Codeception/Codeception/blob/2.0/docs/07-AdvancedUsage.md

    也许用起来更好:

    $I::dontSee('Foo');
    

    问候

    【讨论】:

    • 如果我的问题难以理解,我很抱歉,但这很有帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2017-04-05
    • 2017-04-10
    相关资源
    最近更新 更多