使用“导出”测试语法
概述
Nightwatch 编写测试的默认接口一直是 exports
语法,这使得编写端到端测试非常容易。
虽然这种格式更容易理解和使用,但它也比 BDD describe()
接口更有限。由于 describe()
作为测试格式的广泛使用以及与 Mocha 等工具的兼容性,我们建议使用 BDD describe()
,但是 exports
也将继续正常工作。
示例
以下基本测试套件示例打开搜索引擎 Ecosia.org,搜索“nightwatch”一词,然后验证第一个结果是否为 Nightwatch.js
网站。
tests/sampleTest.js
module.exports = {
'Demo test ecosia.org' : function(browser) {
browser
.url('https://www.ecosia.org/')
.waitForElementVisible('body')
.assert.titleContains('Ecosia')
.assert.visible('input[type=search]')
.setValue('input[type=search]', 'nightwatch')
.assert.visible('button[type=submit]')
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
您也可以在测试中包含多个步骤,如下所示
tests/sampleTest.js
module.exports = {
'step one: navigate to ecosia.org': function(browser) {
browser
.url('https://www.ecosia.org')
.waitForElementVisible('body')
.assert.titleContains('Ecosia')
.assert.visible('input[type=search]')
.setValue('input[type=search]', 'nightwatch')
.assert.visible('button[type=submit]');
},
'step two: click submit' : function (browser) {
browser
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
使用 ES 模块 (ESM)
如果在项目中使用 ES 模块,则需要使用以下格式编写测试。
tests/sampleTest.js
exports default {
'Demo test ecosia.org' : function(browser) {
browser
.url('https://www.ecosia.org/')
.waitForElementVisible('body')
.assert.titleContains('Ecosia')
.assert.visible('input[type=search]')
.setValue('input[type=search]', 'nightwatch')
.assert.visible('button[type=submit]')
.click('button[type=submit]')
.assert.containsText('.mainline-results', 'Nightwatch.js')
.end();
}
};
您还需要使用 nightwatch.conf.cjs
配置文件。
我们已经整理了一个完整的 Github ESM 模板存储库,其中包含多个示例,我们定期对其进行更新,包括 Github Actions 工作流程,方便您入门。
测试标签
您也可以根据标签选择性地指定要运行的测试,这样测试可以属于多个标签。例如,您可能有一个登录测试,它属于 login
套件,也属于 sanity
套件。
可以通过将 @tags
属性添加到测试模块来实现标记。
tests/sampleTest.js
module.exports = {
'@tags': ['login', 'sanity'],
'demo login test': function (browser) {
// test code
}
};
要选择要运行的标签,请使用 --tag
命令行标志
nightwatch --tag login
将多个标签指定为
nightwatch --tag login --tag something_else
要跳过运行具有特定标签的测试,请使用 `--skiptags` 标志
nightwatch --skiptags login
或者要跳过多个标签,请将要跳过的每个标签添加为以逗号分隔的列表
nightwatch --skiptags login,something_else