バックグラウンド
jenkins を使用して継続的インテグレーションを実装しながら、mocha.js を使用して API 自動化を実行しています。失敗したテストの追加情報をログに記録しようとしているときに、いくつかの問題に直面しています。
私のコード
以下は、単一の 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 例外が出力されます。また、必要な情報を出力します(console.logによる)
ジェンキンスに関しては、そうです、これも同じ方法で行うことができ、正常に動作します。しかし、ジェンキンの場合、モカの「Xunitレポーター」を使用する必要があります。これにより、レポーターxmlが生成され、ジェンキンによって読み取られます。その後、jenkins は、リアルタイムおよび履歴のテスト情報を簡単に収集し、さらに統計を行うことができます。しかし、上記のコードがジェンキンスに行くと、xmlが壊れて例外がスローされます
org.dom4j.DocumentException: Error on line 1 of document file:/
これが「console.log」によるものであることは知っていますが、これについてはわかりません。どこにいても(jenkinsコンソールまたはxmlレポート)、一部のケースが失敗した場合にそれらの情報を確認したいだけです。