gpt4 book ai didi

protractor - 在 Protractor 中的所有测试套件之前运行一些功能

转载 作者:行者123 更新时间:2023-12-04 02:07:04 29 4
gpt4 key购买 nike

是否可以在 Protractor 中的任何套件运行之前运行一些测试或逻辑流程?

例如,我想将我的 Protractor 测试分解成一系列套件来测试我的应用程序的不同方面。假设 Jenkins 将在部署之前运行整个测试套件,但个别开发人员将仅运行与他们正在进行的工作相关的套件。

但我希望我的大部分套件都能够登录到应用程序,并且我不想在每个套件中重复该登录逻辑。有没有一种方法可以进行预套件测试,在运行所有测试之前执行诸如登录之类的事情?

我考虑过在我的 Protractor 配置中定义我的套件的地方列出这个

suites: {
'my-profile': [
'./e2e/login/login-as-customer.e2e-spec.js',
'./e2e/my-profile/my-profile-change-password.e2e-spec.js',
'./e2e/my-profile/my-profile-change-username.e2e-spec.js'
],
'my-contacts': [
'./e2e/login/login-as-customer.e2e-spec.js',
'./e2e/my-contacts/add-contact.e2e-spec.js',
'./e2e/my-contacts/remove-contact.e2e-spec.js'
]
}

但问题是,当我们一起运行整个测试套件时,或者如果开发人员想要一起运行多个套件时,我不希望它每次都必须重新登录。我需要的是以某种方式进行的前套件步骤。

Protractor 可以吗?

最佳答案

您正在寻找 conf 文件中的 onPrepare() 函数。该函数在测试套件之前运行。这是取自 https://github.com/angular/protractor/blob/master/spec/withLoginConf.js 的示例

onPrepare: function() {
browser.driver.get(env.baseUrl + '/ng1/login.html');

browser.driver.findElement(by.id('username')).sendKeys('Jane');
browser.driver.findElement(by.id('password')).sendKeys('1234');
browser.driver.findElement(by.id('clickme')).click();

// Login takes some time, so wait until it's done.
// For the test app's login, we know it's done when it redirects to
// index.html.
return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /index/.test(url);
});
}, 10000);
}

关于protractor - 在 Protractor 中的所有测试套件之前运行一些功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42423183/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com