即使我知道测试应该可靠地运行,但我的经验告诉我:不能总是通过合理的努力完成(并且不需要完成;请参阅下面的计算)。
特别是,如果为需要持续改进的预先存在的Web应用程序引入测试,则可能难以构建可靠的E2E测试。但是,相比之下,它非常简单,而且足以构建偶尔崩溃的测试(只要它们在遇到期望/断言时可靠地失败)。
如果您使用Protractor进行E2E测试,您可能也经历过这种情况。
统计数据告诉我,已知有25%的机会崩溃的测试,在运行两次时有6.25%的几率崩溃两次,在运行三次时有1.56%的几率崩溃三次,0.39%运行四次时有四次崩溃的机会,五次运行五次时有0.10%的几率崩溃(等等)。
因此,运行一组这样的测试,直到他们每个都设法终止而没有错误是没有什么大不了的。
我的要求是一次又一次地运行Cucumber.js场景,直到它在单个功能运行期间第一次成功,然后获取后续运行的测试通过/失败结果。
我尝试构建一个重新运行场景的After
钩子,但是我找不到从钩子内调用场景的方法。除此之外,我没有找到丢弃崩溃场景的方法。
请告诉我我有哪些选择。我正在使用Grunt,Protractor和Cucumber。
由于我们的测试套件非常庞大,仍在快速增长并且通过自动构建过程运行,因此我需要一种尽可能可靠地运行不可靠测试的方法。
答案 0 :(得分:0)
角度失败的常见原因不是等待所有待处理的请求完成。在我的页面构造函数中,我插入等待此Javascript以返回true:
"return angular.element(document.body).injector().get(\'$http\').pendingRequests.length == 0;"
继续之前。在继续我的测试之前,要小心明确地等待JavaScript完成,他们的可靠性非常高。
话虽如此,那里还有重新运行的框架。这是一个Nickolay Kolesnik 。