如何跳过 Codeception cest 测试
Posted
技术标签:
【中文标题】如何跳过 Codeception cest 测试【英文标题】:How to skip a Codeception cest test 【发布时间】:2015-05-13 06:09:13 【问题描述】:我只想跳过一个 codeception cest 测试中的一个测试。
使用 Cept 测试,您可以进行 $scenario->skip();
,但不适用于 Cest 测试。
所以我想做这样的事情。运行第一个测试,但跳过第二个。
Class MyTests
public funtion test1()
// My test steps
public function test2()
$scenario->skip("Work in progress");
提前谢谢你。
【问题讨论】:
【参考方案1】:您要查找的方法称为“不完整”。
$scenario->incomplete('your message, why skipping');
如果你想在 Cest 文件中使用 Scenarios,你可以通过你的测试方法的第二个参数来获取它:
class yourCest
public function yourTest(WebGuy $I, $scenario)
$scenario->incomplete('your message');
或者你可以使用$scenario->skip('your message')
class yourCest
public function yourTest(WebGuy $I, $scenario)
$scenario->skip('your message');
编辑:
如前所述,WebGuy 已过时,注释 @skip
或 @incomplete
是您应该跳过 Cest 文件中的测试的方式。
class yourCest
/**
* @skip Skip message
*/
public function yourTest(AcceptanceTester $I)
$I->shouldTestSomething();
【讨论】:
请注意,您将$scenario
作为参数传递给您的测试方法。我在第一次阅读时错过了这个:(
我刚刚尝试了incomplete
和skip
,但没有任何反应。没有错误,没有消息,运行套件时测试被标记为“OK”。有什么想法吗?
这个答案应该被删除。 Webguy 已折旧。【参考方案2】:
首先,请记住,您可以使用哪些命令取决于您加载了哪些模块和套件。例如,如果您正在使用默认启用 WordPress 的 YML 进行集成测试:
$scenario->skip('your message');
不适用于开箱即用的 Cest 或测试,但可以在 Acceptance 中使用。
事实上,这个命令通常会与 Cept 测试一起使用 [Cepts 通常是 Acceptance like tests,Cests 和 Tests 通常是 phpUnit like OOP tests]。此外,您需要将 $scenario 传递给您的函数。这没有明确记录,我无法让它在 Cests 中工作。不要让我开始说选择“$scenario”作为 BDD 框架的关键字有多糟糕! “场景”是 Gherkin 中的一个关键字,指的是 Codeception 中的“步骤对象”。在 Codeception 中,它似乎被用作“环境”的一种冗余形式,即使已经存在环境、套件和组。像大多数这个伟大的框架一样,文档和函数名称需要由以英语为母语的人重做,这是第二次! [还记得“网络人”吗?该死的性别歧视欧洲人!大声笑]。
如果你使用
/**
* @skip
*/
public function myTest()
//this test is totally ignored
Cest 或 Test 中函数正上方的注释将被跳过,甚至不会出现在报告中。 [真的跳过它]。如果您想完全隐藏测试,请使用此选项。
如果直接使用 PHPUnit 命令:
public function myTest()
throw new \PHPUnit_Framework_SkippedTestError('This test is skipped');
//this test will appear as a yellow “skipped” test in the report
这将在报告中生成一个跳过的测试,在 html 报告中变为黄色 [--html]。如果您想跳过测试但在报告中注意到它已被跳过,请使用此选项。
【讨论】:
【参考方案3】:使用 PHPUnit_Framework_SkippedTestError。例如:
if (!extension_loaded('mongo'))
throw new \PHPUnit_Framework_SkippedTestError(
'Warning: mongo extension is not loaded'
);
【讨论】:
【参考方案4】:我使用skip
注释进行单元测试。
/**
* @skip
*/
public function MyTest(UnitTester $I)
...
【讨论】:
【参考方案5】:所以要在测试运行期间跳过您的场景:
-
您必须将 $scenario 作为测试中的第二个输入参数
拨打电话:$scenario->skip();
跳过后拨打电话:$I->comment("跳过场景的原因")
【讨论】:
以上是关于如何跳过 Codeception cest 测试的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Codeception 功能测试中使用 PHPUnit 断言方法?