我的套件中有很多测试,我想在运行测试时打印出文件名,或者在所有测试失败时包括文件名。
我可以在console.log(config.specs)
中用browser.getProcessedConfig()
打印出规格,但它仅显示为glob模式,而我需要完整的文件名。我已经尝试过config.suites
,但它可以打印出所有套件,而不仅仅是测试中运行的套件。
conf.shared.ts
await browser.getProcessedConfig().then(async function(config: any) {
});
console.log(config.specs)
console.log(config.suites)
return config.specs;
config.specs的输出
'../../../../lib/tests/home/**/*.myparam*.js'
config.suites的输出
mysuite:
'../../../../lib/tests/home/**/market/**/*.*.myfilename.js',
mysuite2:
'../../../../lib/tests/home/**/market2/**/*.*.myfilename.js',
mysuite3:
'../../../../lib/tests/home/**/market3/**/*.*.myfilename.js',
mysuite4:
'../../../../lib/tests/home/**/market4/**/*.*.myfilename.js'
答案 0 :(得分:0)
在您的conf.js
中将其添加到onPrepare
onPrepare() {
/**
* Set global environment configuration
*/
Object.defineProperty(global, '__stack', {
get: function () {
let orig = Error.prepareStackTrace;
Error.prepareStackTrace = function (_, stack) {
return stack;
};
let err = new Error;
Error.captureStackTrace(err, arguments.callee);
let stack = err.stack;
Error.prepareStackTrace = orig;
return stack;
}
});
// returns name of the file from which is called
Object.defineProperty(global, '__file', {
get: function () {
let path = __stack[1].getFileName();
try { //*nix OSes
return path.match(/[^\/]+\/[^\/]+$/)[0];
} catch (error) { //Windows based OSes
return path.match(/[^\\]+\\[^\\]+$/)[0];
}
}
});
// returns function name from which is called
Object.defineProperty(global, '__function', {
get: function () {
return __stack[1].getFunctionName();
}
});
// returns line number of the position in code when called
Object.defineProperty(global, '__line', {
get: function () {
return __stack[1].getLineNumber();
}
});
},
,然后在框架中的任何位置(规范或页面对象)运行它
console.log(__file);
console.log(__function);
console.log(__line);
您会得到类似的东西
// test.spec.js
// funcName()
// 56
显然,您可以根据需要调整代码