我们需要能够运行一组动态的规范文件。
// Would be ideal, but not working
exports.config = {
specs: () => {
/* Load list of tests to bu run from API or from CSV file
},
......
}
任何想法,将不胜感激。
我们需要能够运行一组动态的规范文件。
// Would be ideal, but not working
exports.config = {
specs: () => {
/* Load list of tests to bu run from API or from CSV file
},
......
}
任何想法,将不胜感激。
我会为 JavaScript 而不是 TS 回答这个问题,但它会让你了解你的选择
如果您希望在某处使用预定义的测试套件,那么有两种方法:
在你的配置中,做这样的事情
exports.config = {
// ...
specs: function (option) {
let suites = require("./suites.json");
return suites[option]
}(process.env.SUITE)
// ...
};
然后让你的suites.json
{
"providers": [
"tests/providers/*.spec.js"
],
"users": [
"tests/users/*.spec.js"
],
"production": [
"tests/*/expected-configs.spec.js",
"tests/*/environment-configuration.spec.js",
"tests/*/last-claim-filter.spec.js",
"tests/*/diagnosis-bh-filter.spec.js"
],
"sanity": [
"tests/*/expected-configs.spec.js",
"tests/*/environment-configuration.spec.js",
"tests/*/info-panel.spec.js",
"tests/*/robohelp.spec.js"
]
}
然后像这样启动量角器SUITE="production" protractor protractor.conf.js
(Windows可能不同)
不幸的是,这种方法不能使用 CSV,而且听起来也不可行。顺便说一句,我也不明白你从 API 启动量角器是什么意思
这是一个困难的设置,所以我不能给你现成的答案,但这听起来像是你需要的
Grunt是一个任务运行器。您需要做的是配置一个任务,该任务将是:
这可能很棘手,但您可以尝试使用getMultiCapabilities
配置方法:
https://github.com/angular/protractor/blob/master/lib/config.ts#L383
想法是 - 您的功能对象可以具有specs
属性:
specs?: string[];
它会将规范添加到配置中的规范,但它可以用于动态设置它们。您也可以使用exclude?: string[];
动态排除运行中的一些测试文件。
所以代码可能看起来像这样:
exports.config = {
specs: [] // just empty, we will override it in capabilities
// If getMultiCapabilities is specified, both capabilities and multiCapabilities will be ignored
getMultiCapabilities: async function () {
// For example reading specs from HTTP response
const request = require('request-promise-native')
const specsFromAPI = await request.get('http://some.api/specs')
// should return array of Capabilities objects
return [{
browserName: 'chrome',
specs: specsFromAPI
}]
}
}