jasmine - 在运行另一个之前等待特定的规范文件执行 - Jasmine/Protractor

标签 jasmine protractor wait

工具:Protractor 3.3.0、Jasmine 2.4.1、Selenium Standalone Server。

我有一个测试套件,里面有大量的 spec.js 文件,每个文件都包含我的应用程序的独特测试。

我正在使用 最大实例数 分片测试文件 浏览器功能可以启动 3 个浏览器并运行每个规范文件以减少整个套件的运行时间(3 个浏览器的运行时间约为 20 分钟......所以没有它可能需要一个多小时)。

我的问题是如何告诉 Protractor 在执行之前让规范文件等待另一个规范文件的完成。例如:

假设我有一个 第 1 页 测试 我有规范文件 a1.spec , a2.spec , 和 a3.spec 然后我有一些类似结构的其他测试或你有什么。

当我用 3 个浏览器实例启动 Protractor 时,正如预期的那样, a1.spec , a2.spec , 和 a3.spec 所有这些都使用自己的个人浏览器实例启动,因为它的比例为 1:1。但是如果 a3.spec 不能运行,除非 a2.spec 完成?我如何使这种等待发生,或者只是不使某些测试相互依赖的最佳实践?

最佳答案

您可以使用 done回调要么在beforeEachit任何需要时间异步完成的测试。在您等待的测试完成之前,不会运行任何后续测试。

在每个示例之前

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但这可能会使事情变得过于复杂。

关于jasmine - 在运行另一个之前等待特定的规范文件执行 - Jasmine/Protractor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818204/

相关文章:

javascript - Jasmine SpyOn 测试不起作用

javascript - Jasmine 中的angularjs访问表单不使用$scope

javascript - 类型错误 : undefined is not a function

angularjs - Protractor - 测试 angular.service 时未定义注入(inject)

c - 子进程死亡后等待孙子

c - 让微 Controller 即使在等待时也总是注意到按下按钮(延迟)

java - 避免在调用监听器之前执行代码?

angularjs - Protractor 无法与页面同步

javascript - 失败 : Cannot read property 'all' of undefined

javascript - 如何在非 angularjs 网站上使用 Protractor ?