如何基于 mocha + jenkins 框架追加额外信息?
How to append extra information based on mocha + jenkins framework?
背景
我正在使用 mocha.js 执行 api 自动化,同时使用 jenkins 实施持续集成。我在尝试为失败的测试记录一些额外信息时遇到了一些问题。
我的代码
以下是我的单个 api 测试的基本代码。
var conf = require('../../../configuration.js');
var CONST = conf.CONST;
var R = require('../../../req.js');
var expect = R.expect;
var __path = R.__path;
var Promise = require('bluebird');
var supertest = R.supertest;
var env = CONST.APP_ADDRESS_TESTENV;
var tester = supertest.agent(env);
describe('TestA', function () {
it('TestPoint A', function (done) {
var url = __path(__filename);
var params = 'languageId=1';
tester.get(url + params)
.end(function (err, res) {
new Promise(function (resolve, reject) {
var result = res.body.result;
expect(result.length).equal(8);
resolve(res.body);
}).then(body => {
expect(body.msg).equal("True");
return body;
}).then(body => {
expect(body.code).equal("0");
done();
return body;
}).catch(err => {
console.log(env + url + params);
console.log(JSON.stringify(res.body));
done(err);
});
});
});
});
问题
当我运行本地测试的时候,比如直接运行mocha *.js,然后脚本运行正常。如果出现问题,它将无法通过测试并打印 mocha 异常。它还会输出我需要的信息(by console.log)
说到詹金斯,是的,我也可以用同样的方式做到这一点,而且它可以正常工作。但是对于 jenkins,我需要使用 'Xunit reporter' of mocha,它会生成一个记者 xml 并由 jenkins 阅读。然后jenkins很容易收集实时和历史的测试信息,做进一步的统计。但是,当上面的代码转到 jenkins 时,它会破坏 xml 并抛出
之类的异常
org.dom4j.DocumentException: Error on line 1 of document file:/
我知道这是由于 "console.log" 但我对此一无所知。我只想在某些案例失败时查看这些信息,无论它位于何处(jenkins 控制台或 xml 报告)。
哦,我发现我可以传递所有我想要的作为 done()
的参数。这可能没什么大不了的。感谢大家的关注
背景
我正在使用 mocha.js 执行 api 自动化,同时使用 jenkins 实施持续集成。我在尝试为失败的测试记录一些额外信息时遇到了一些问题。
我的代码
以下是我的单个 api 测试的基本代码。
var conf = require('../../../configuration.js');
var CONST = conf.CONST;
var R = require('../../../req.js');
var expect = R.expect;
var __path = R.__path;
var Promise = require('bluebird');
var supertest = R.supertest;
var env = CONST.APP_ADDRESS_TESTENV;
var tester = supertest.agent(env);
describe('TestA', function () {
it('TestPoint A', function (done) {
var url = __path(__filename);
var params = 'languageId=1';
tester.get(url + params)
.end(function (err, res) {
new Promise(function (resolve, reject) {
var result = res.body.result;
expect(result.length).equal(8);
resolve(res.body);
}).then(body => {
expect(body.msg).equal("True");
return body;
}).then(body => {
expect(body.code).equal("0");
done();
return body;
}).catch(err => {
console.log(env + url + params);
console.log(JSON.stringify(res.body));
done(err);
});
});
});
});
问题 当我运行本地测试的时候,比如直接运行mocha *.js,然后脚本运行正常。如果出现问题,它将无法通过测试并打印 mocha 异常。它还会输出我需要的信息(by console.log)
说到詹金斯,是的,我也可以用同样的方式做到这一点,而且它可以正常工作。但是对于 jenkins,我需要使用 'Xunit reporter' of mocha,它会生成一个记者 xml 并由 jenkins 阅读。然后jenkins很容易收集实时和历史的测试信息,做进一步的统计。但是,当上面的代码转到 jenkins 时,它会破坏 xml 并抛出
之类的异常org.dom4j.DocumentException: Error on line 1 of document file:/
我知道这是由于 "console.log" 但我对此一无所知。我只想在某些案例失败时查看这些信息,无论它位于何处(jenkins 控制台或 xml 报告)。
哦,我发现我可以传递所有我想要的作为 done()
的参数。这可能没什么大不了的。感谢大家的关注