如何同时测试两个不同的测试组?
How can I test two different test groups concurrently?
我正在同时尝试 运行 我的测试,但包括登录的测试除外。
我试图将测试分为两组(登录和不登录)。这两组运行并行。没有登录的测试是运行并发的,但是登录的测试运行是一个接一个的。问题是 运行ner 只有 运行s 在没有登录的情况下测试了两次。我在 https://github.com/DevExpress/testcafe/issues/116 中看到了 .serial 功能讨论,我认为这在这种情况下会有很大帮助。
const createTestCafe = require('testcafe');
const config = require('./config');
const testArrayBuilder = require('./Tests/helpers/testArrayBuilder');
let testSteps = require('./Tests/helpers/testSteps');
let testcafe;
const store = process['argv'][2],
name = process['argv'][3],
env = process['argv'][4];
const testsFile = require(`./Tests/${store}/tests.json`);
const output = 'logs/test-results-' + store + '-' + env + '-' + name + '.json';
createTestCafe('localhost', 0)
.then(tc => {
testcafe = tc;
const tests = getTests();
const runner = testcafe.createRunner();
if (name !== 'all') {
runner.filter(testName => {
return testName === name;
});
}
runner.reporter(['spec', {
name: 'json-custom',
output: output
}]);
return Promise.all(tests.map(obj => {
if(obj.login === true) {
//Don't change number value for this one,
//because login tests won't run properly.
return runTests(runner, obj.tests, 1);
} else{
return runTests(runner, obj.tests, 1);
}
}));
})
.then(() => {
testSteps.mergeWithReporter(output);
testcafe.close();
});
const runTests = (runner, tests, windows) => {
return runner
.src(tests)
.browsers(config.browsers)
.concurrency(windows)
.screenshots('logs/screenshots/', true)
.run({
skipJsErrors: true,
quarantineMode: true,
selectorTimeout: 20000,
assertionTimeout: 20000,
pageLoadTimeout: 20000,
speed: 0.5,
stopOnFirstFail: false
});
}
const getTests = () => {
const testsWithoutLogin = testArrayBuilder(testsFile[env], false);
switch (store) {
case 'shop1':
const testsWithLogin = testArrayBuilder(testsFile[env], true);
return [{login: true ,tests: testsWithLogin}, {login: false, tests: testsWithoutLogin}];
case 'shop2':
return [{login: false ,tests: testsWithoutLogin}];
}
}
请注意,如果我在 运行Tests() 中编写 createRunner() 部分,reporter 将被覆盖。
我认为这里的问题是您在 Promise.race
函数中使用相同的运行器进行并行测试执行。我建议您对两个测试集使用不同的跑步者。
我正在同时尝试 运行 我的测试,但包括登录的测试除外。
我试图将测试分为两组(登录和不登录)。这两组运行并行。没有登录的测试是运行并发的,但是登录的测试运行是一个接一个的。问题是 运行ner 只有 运行s 在没有登录的情况下测试了两次。我在 https://github.com/DevExpress/testcafe/issues/116 中看到了 .serial 功能讨论,我认为这在这种情况下会有很大帮助。
const createTestCafe = require('testcafe');
const config = require('./config');
const testArrayBuilder = require('./Tests/helpers/testArrayBuilder');
let testSteps = require('./Tests/helpers/testSteps');
let testcafe;
const store = process['argv'][2],
name = process['argv'][3],
env = process['argv'][4];
const testsFile = require(`./Tests/${store}/tests.json`);
const output = 'logs/test-results-' + store + '-' + env + '-' + name + '.json';
createTestCafe('localhost', 0)
.then(tc => {
testcafe = tc;
const tests = getTests();
const runner = testcafe.createRunner();
if (name !== 'all') {
runner.filter(testName => {
return testName === name;
});
}
runner.reporter(['spec', {
name: 'json-custom',
output: output
}]);
return Promise.all(tests.map(obj => {
if(obj.login === true) {
//Don't change number value for this one,
//because login tests won't run properly.
return runTests(runner, obj.tests, 1);
} else{
return runTests(runner, obj.tests, 1);
}
}));
})
.then(() => {
testSteps.mergeWithReporter(output);
testcafe.close();
});
const runTests = (runner, tests, windows) => {
return runner
.src(tests)
.browsers(config.browsers)
.concurrency(windows)
.screenshots('logs/screenshots/', true)
.run({
skipJsErrors: true,
quarantineMode: true,
selectorTimeout: 20000,
assertionTimeout: 20000,
pageLoadTimeout: 20000,
speed: 0.5,
stopOnFirstFail: false
});
}
const getTests = () => {
const testsWithoutLogin = testArrayBuilder(testsFile[env], false);
switch (store) {
case 'shop1':
const testsWithLogin = testArrayBuilder(testsFile[env], true);
return [{login: true ,tests: testsWithLogin}, {login: false, tests: testsWithoutLogin}];
case 'shop2':
return [{login: false ,tests: testsWithoutLogin}];
}
}
请注意,如果我在 运行Tests() 中编写 createRunner() 部分,reporter 将被覆盖。
我认为这里的问题是您在 Promise.race
函数中使用相同的运行器进行并行测试执行。我建议您对两个测试集使用不同的跑步者。