学习 NightWatch - BDD 语法
BDD (行为驱动开发) 测试语法
NightWatch 的 BDD 接口提供了一下功能:
describe()
/context()
test()
/it()
/specify()
before()
after()
beforeEach()
afterEach()
例子
// ts
import {NightwatchTests} from 'nightwatch';
const Ecosia: NightwatchTests = {
'demo test': () => {
browser
.url('https://www.ecosia.org/')
.setValue('input[type=search]', 'nightwatch')
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
export default Ecosia;
// js
describe('Ecosia', function() {
// test() and specify() is also available
it('demo test', function(browser) {
browser
.url('https://www.ecosia.org/')
.setValue('input[type=search]', 'nightwatch')
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
});
});
语法
检索设置
所有当前设置均可通过 获得。this.settings
describe('homepage test with describe', function() {
console.log('Settings', this.settings);
it('...', function() {
// ...
});
});
所需功能
测试套件特定功能。
describe('homepage test with describe', function() {
this.desiredCapabilities = {};
it('...', function() {
// ...
});
});
单元测试
如果当前测试是单元/集成测试(即不会创建 Web 驱动程序会话),请启用此选项;
describe('homepage test with describe', function() {
this.unitTest = true;
it('...', function() {
// ...
});
});
失败时结束会话
如果您希望浏览器窗口在发生故障或错误时保持打开状态,请将此项设置为(对调试很有用)。false
describe('homepage test with describe', function() {
this.endSessionOnFail = false
it('...', function() {
// ...
});
});
失败时跳过其余测试用例
如果您希望在断言失败/错误时执行其余测试用例/测试步骤,请将此项设置为false
describe('homepage test with describe', function() {
this.skipTestcasesOnFail = true
it('...', function() {
// ...
});
});
禁用/跳过测试套件
如果您希望测试运行程序跳过此测试套件,请将此项设置为 true
describe('homepage test with describe', function() {
this.disabled = true
it('...', function() {
// ...
});
});
重试
describe('homepage test with describe', function() {
this.retries(3);
this.suiteRetries(2);
it('...', function() {
// ...
});
});
控制断言超时
控制断言和元素命令超时,直到应定位元素或传递断言
describe('homepage test with describe', function() {
this.timeout(1000)
it('...', function() {
// ...
});
});
控制轮询间隔
控制重试断言或元素命令之间的轮询间隔
describe('homepage test with describe', function() {
this.retryInterval(100);
it('...', function() {
// ...
});
});
定义标签
为此测试套件定义标记。
describe('homepage test with describe', function() {
this.tags = ['login']
it('...', function() {
// ...
});
});
测试函数和挂钩
describe('homepage test with describe', function() {
before(function(browser) {
this.homepage = browser.page.home();
});
it('startHomepage', () => {
this.homepage.navigate();
this.homepage.expect.section('@indexContainer').to.be.not.visible;
});
// 只运行一次
//
it.only('startHomepage', () => {
this.homepage.navigate();
});
//
// 跳过的测试用例
xtest('async testcase', async browser => {
const result = await browser.getText('#navigation');
console.log('result', result.value)
});
test('version dropdown is enabled', browser => {
const navigation = this.homepage.section.navigation;
const navbarHeader = navigation.section.navbarHeader;
navbarHeader.expect.element('@versionDropdown').to.be.enabled;
});
after(browser => browser.end());
});
学习 NightWatch - BDD 语法
http://localhost:8080/archives/c8cffde6-785a-4b70-b8d8-5ad60f92676e