在 Nightwatch.js 中动态创建测试用例
Dynamically create test cases in Nightwatch.js
有没有办法在 Nightwatch.js 中动态创建测试用例?
示例用例:
我想 运行 来自 Qual-E 测试引擎的 "Conformance" 测试套件,并使用 Nightwatch.js 简单地从页面读取测试用例的结果.此时我有一个模块文件,每个测试用例定义为一个单独的函数:
module.exports = {
'AudioContext' : function (browser) {
// test's code
},
...
'MediaList.length' : function (browser) {
// test's code
}
};
当来自 Qual-E 测试引擎的 "Conformance" 测试套件发生变化时(这种情况时有发生),我需要更新模块文件中的测试用例列表。我想在这个模块文件中只有一个函数(例如 before 函数),它将读取 Qual-E 页面作为第一步并在 运行时间,所以我将始终拥有最新的测试套件。
事实证明,每个导出函数都被视为测试用例函数(除了一些保留函数,如 before
、after
等)。这是一个示例解决方案:
module.exports = {
...
};
(function() {
var testCasesList = [
// [testCaseID, testCaseName]
];
function testFunction(browser, testCaseID) {
// Generic test case body
}
function createTests(object) {
function createFunction(testCaseID) {
return function(browser) {
testFunction(browser, testCaseID);
};
}
for (var i = 0; i < testCasesList.length; i++) {
testCaseID = testCasesList[i][0];
object[testCasesList[i][1]] = createFunction(testCaseID);
}
}
createTests(module.exports);
})();
有没有办法在 Nightwatch.js 中动态创建测试用例?
示例用例:
我想 运行 来自 Qual-E 测试引擎的 "Conformance" 测试套件,并使用 Nightwatch.js 简单地从页面读取测试用例的结果.此时我有一个模块文件,每个测试用例定义为一个单独的函数:
module.exports = {
'AudioContext' : function (browser) {
// test's code
},
...
'MediaList.length' : function (browser) {
// test's code
}
};
当来自 Qual-E 测试引擎的 "Conformance" 测试套件发生变化时(这种情况时有发生),我需要更新模块文件中的测试用例列表。我想在这个模块文件中只有一个函数(例如 before 函数),它将读取 Qual-E 页面作为第一步并在 运行时间,所以我将始终拥有最新的测试套件。
事实证明,每个导出函数都被视为测试用例函数(除了一些保留函数,如 before
、after
等)。这是一个示例解决方案:
module.exports = {
...
};
(function() {
var testCasesList = [
// [testCaseID, testCaseName]
];
function testFunction(browser, testCaseID) {
// Generic test case body
}
function createTests(object) {
function createFunction(testCaseID) {
return function(browser) {
testFunction(browser, testCaseID);
};
}
for (var i = 0; i < testCasesList.length; i++) {
testCaseID = testCasesList[i][0];
object[testCasesList[i][1]] = createFunction(testCaseID);
}
}
createTests(module.exports);
})();