多个科目的单项测试

时间:2017-08-25 02:43:49

标签: javascript mocha selenium-chromedriver nightwatch.js

如何制作动态测试用例?

这些搜索输入不是硬编码的,它是由函数生成的( - 它将对所有网页进行整个爬行并查找每个应用并使用{name:xxxx,link:,xxxx}保存它们)

对于每次搜索,应该有一组从“步骤1”到“步骤4”的单独测试

我改为Mocha,但在处理搜索输入之前,Mocha似乎编译了测试用例

使用之前,或添加'步骤0 - 处理搜索',似乎不起作用。

var searches = [];

describe('search', function() {
    before(function(browser) {
        searches = populateSearch(browser);
    });
    it('step 0 - process search': function(browser) {
        searches = populateSearch();
    });
    searches.forEach( search => {
        it('step 1 - launch url': function(browser) {
        });
        it('step 2 - click search box': function(browser) {
        });
        it('step 3 - type in search': function(browser) {
        });
        it('step 4 - search found in search lists': function(broswer) {
            assert.equal(search.name, 'xxx')
            assert.equal(search.link, 'xxx')
        });
    });
});

现在,我认为有两个选择

a)使用browser.globals.searches填充先前的测试,并在测试用例中显示填充(string,()=> {})。但是它仍然不起作用,因为编译时的browser.globals.searches是空的,所以没有生成测试用例? 有没有什么方法可以让mocha首先运行一个测试来填充全局变量,然后编译实际测试,以便动态创建测试?

b)使用node做动态和运行,这个问题就是我无法在套件中添加嵌套的describe,我该如何添加嵌套的describe?

var Mocha = require('mocha');
var Test = Mocha.Test;
var Suite = Mocha.Suite;

var mocha = new Mocha();
var suite = Suite.create(mocha.suite, 'Search Box');

suite.addTest(new Test('I\'m a dynamic test', function () {
    console.log("haha");
}));

更新

我正在尝试使用async: - delay和run()

在nightwatch.json中

"test_runner" : {
    "type" : "mocha",
    "options" : {
        "ui" : "bdd",
        "reporter" : "list",
        "delay" : true
    }
}

在search.js

"use strict";
var helpers_1 = require('../util/helpers');
var utils_1 = require('../util/utils');
var subjects_1 = require('../util/subjects');

var nightwatch = require('nightwatch');

var client = nightwatch.initClient({
    silent : true
});

var browser = client.api();

function test() {
    describe('Search', function () {
        browser
            .url(browser.launch_url)
            .waitForElementVisible('body', 3000, function () {
                helpers_1.getToCheckTiles(browser);
            });
    Object.Keys(browser.globals.toCheckTiles).forEach(function (type) {
        browser.globals.toCheckTiles[type].forEach(function (tile) {
            it('step 1 - launch url': function(browser) {
            });
            it('step 2 - click search box': function(browser) {
            });
            it('step 3 - type in search': function(browser) {
            });
            it('step 4 - search found in search lists': function(browser) {
                assert.equal(search.name, 'xxx')
                assert.equal(search.link, 'xxx')
            });
        });
    });
    run();
});

setTimeout(test, 10000);

程序暂停,无论我输入哪个超时,退出

0 个答案:

没有答案