【问题标题】:Dynamically create test cases in Nightwatch.js在 Nightwatch.js 中动态创建测试用例
【发布时间】:2018-03-06 03:29:25
【问题描述】:

有没有办法在 Nightwatch.js 中动态创建测试用例?

一个示例用例:

我想从Qual-E 测试引擎运行“一致性”测试套件,并使用 Nightwatch.js 从页面中简单地读取测试用例的结果。目前我有一个单独的模块文件,每个测试用例都定义为一个单独的函数:

module.exports = {
    'AudioContext' : function (browser) {
        // test's code
    },

    ...

    'MediaList.length' : function (browser) {
        // test's code
    }
};

当来自Qual-E 测试引擎的“一致性”测试套件发生变化(不时发生)时,我需要更新模块文件中的测试用例列表。我想在这个模块文件中只有一个函数(例如 before 函数),它将读取Qual-E 页面作为第一步并在运行时生成测试用例,所以我将始终拥有最新的测试套件。

【问题讨论】:

    标签: javascript testing nightwatch.js


    【解决方案1】:

    事实证明,每个导出的函数都被视为一个测试用例函数(除了一些保留函数,如 beforeafter 等)。这是一个示例解决方案:

    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);
    })();
    

    【讨论】:

    • 你知道这在运行时是否有效吗?意味着可以动态生成和添加(和运行)测试用例吗?我有一个抓取 URL 并针对每个 URL 运行测试的测试,并且希望更好地组织它们
    • 如果我理解正确,您可以将我示例中的 for 循环替换为爬虫代码,然后一次运行所有生成的测试。
    猜你喜欢
    • 2016-06-21
    • 2010-10-26
    • 1970-01-01
    • 2010-11-14
    • 2021-12-20
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多