加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在运行另一个之前等待特定的spec文件执行 – Jasmine / Protract

发布时间:2020-12-15 02:15:11 所属栏目:Java 来源:网络整理
导读:工具:Protractor 3.3.0,Jasmine 2.4.1,Selenium Standalone Server. 我有一个测试套件,其中包含大量的spec.js文件,每个文件都包含我的应用程序的唯一测试. 我正在使用maxInstances和shardTestFiles浏览器功能来启动3个浏览器并运行每个spec文件以减少整个套
工具: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,但这可能会使事情变得太复杂.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读