在运行另一个之前等待特定的spec文件执行 – Jasmine / Protract
工具:Protractor 3.3.0,Jasmine 2.4.1,Selenium Standalone Server.
我有一个测试套件,其中包含大量的spec.js文件,每个文件都包含我的应用程序的唯一测试. 我正在使用maxInstances和shardTestFiles浏览器功能来启动3个浏览器并运行每个spec文件以减少整个套件的运行时间(3个浏览器大约需要20分钟……所以没有它可能超过一个小时). 我的问题是如何在执行之前告诉Protractor有一个spec文件等待另一个spec文件的完成.例如: 让我说我有一个测试,我有规范文件a1.spec,a2.spec和a3.spec然后我有一些类似结构的测试或你有什么. 当我按照预期启动具有3个浏览器实例的量角器时,a1.spec,a2.spec和a3.spec都会使用各自的浏览器实例启动,因为它的比例为1:1.但是如果除非a2.spec完成,否则a3.spec无法运行怎么办?如何使这种等待发生,或者仅仅是最佳做法是不使某些测试相互依赖? 解决方法
您可以在beforeEach中使用done回调,也可以在需要时间异步完成的任何测试中使用.在您等待的测试完成之前,任何后续测试都不会运行.
beforeEach示例 beforeEach(function(done) { setTimeout(function() { value = 0; done(); },1); }); 它的例子 it("should support async execution of test preparation and expectations",function(done) { value++; expect(value).toBeGreaterThan(0); done(); }); 这将按您的需要排队,但测试将按顺序运行.为了加快速度,你可以使用Promises和when/guard,但这可能会使事情变得太复杂. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |