我正在使用量角器 - 黄瓜 - 框架进行测试自动化。我有多个功能文件。每个要素文件都有多个方案。我正在使用“cucumber-html-reporter”获取测试执行的HTML报告。此HTML报告提供有关功能总数和已执行方案总数的详细信息。因此,在测试执行后,我才知道我执行的“特征文件总数”和“场景总数”。
是否有任何命令或插件可用于获取
在我的JavaScript测试自动化中?
答案 0 :(得分:1)
没有插件,这很容易实现。
为什么不创建一个以功能名称为键的对象,并将方案计为值,并将其console.log()
或者保存到文件中以便稍后查看?
我将展示两种方式(2.x语法和1.x语法,因此我已经涵盖了基础)。
CucumberJS 2.x语法
let {defineSupportCode} = require('cucumber'),
counter = {};
defineSupportCode(({registerHandler, Before}) => {
registerHandler('BeforeFeature', function (feature, callback) {
global.featureName = function () {
return feature.name;
};
callback();
});
Before(function (scenario, callback){
counter[featureName()] !== undefined ? counter[featureName()] += 1 : counter[featureName()] = 1;
callback();
});
registerHandler('AfterFeatures', function (feature, callback) {
console.log(JSON.stringify(counter));
callback();
});
});
CucumberJS 1.x语法
var counter = {};
module.exports = function () {
this.BeforeFeature(function (feature, callback) {
global.featureName = function () {
return feature.name;
};
callback();
});
this.Before(function (scenario, callback){
counter[featureName()] !== undefined ? counter[featureName()] += 1 : counter[featureName()] = 1;
callback();
});
this.AfterFeatures(function (feature, callback) {
console.log(JSON.stringify(counter));
callback();
});
};
<强>附加强>
如果要将其保存到文件中,以便稍后可以看到它,我建议使用fs-extra库。代替console.log()
,请使用:
fs = require('fs-extra');
fs.writeFileSync("path/to/file.js","let suite = " + JSON.stringify(counter));
请注意,该文件将从您运行测试的位置创建。
Given I am running from "frameworks/cucumberjs"
When I generate a file from "frameworks/cucumberjs/hooks/counter.js" with the fs library at "./file.js"
Then the file "frameworks/cucumberjs/file.js" should exist
Given I am running from "frameworks/cucumberjs"
When I generate a file from "frameworks/cucumberjs/features/support/hooks/counter.js" with the fs library at "./hello/file.js"
Then the file "frameworks/cucumberjs/hello/file.js" should exist
只需确保您从正确的目录运行。
功能总数
如果您还想要功能的总数:
取代console.log()
:
console.log(JSON.stringify(counter) + "\nFeature Count: " + Object.keys(counter).length)
代替writeFile:
fs.writeFileSync("path/to/file.js","let suite = " + JSON.stringify(counter) + ", featureCount = " + Object.keys(counter).length);
由于我们已根据每个功能名称对场景计数进行排序,因此说明我们创建的对象中的键数量将为我们提供功能数量的计数。
答案 1 :(得分:1)
一个多功能的JS脚本,包括使用Gherkin解析AST的特征文件,并从该结构中计算特征,场景,标签等。
例如:
const glob = require('glob')
const Gherkin = require('gherkin')
const parser = new Gherkin.Parser()
const AST = glob
.sync('./specifications/**/*.feature')
.map(path => parser.parse(fs.readFileSync(path).toString()))
从那里你可以遍历AST对象并提取特征/场景计数和所需的所有其他信息。