簡體   English   中英

將測試ID添加到單元測試中以進行報告

[英]Adding test IDs to unit tests for reporting

我正在使用摩卡(mocha),並嘗試構建一個單獨報告測試的測試系統。 目的是在項目要求中定義的測試與單元測試之間具有可追溯性。 因此,例如,測試“必須能夠創建新的小部件”位於ID為'43'的需求數據庫中,我希望單元測試對測試該標准的測試進行報告,例如Test 43, Must be able to create new widgets, pass ,然后更新相應的數據庫條目(另一個服務可能對此負責)。

可以在摩卡咖啡中完成嗎? 到目前為止,我發現的唯一一件事是用測試ID替換了it()函數中的文本,然后使用json報告程序處理結果(但是后來我沒有得到正在測試的文本,除非我將它們結合起來並進行某種解析)。 注意:並非所有測試都具有ID。

這是我希望獲得的那種功能的示例

describe("Widget" function() {
  it("should allow creation of widgets", function() {
    this.id = 43;
    result = widget.create();
    expect.result.to.exist;
  });
});

然后是一個鈎子

afterEach(function(test) {
  if (test.hasOwnProperty('id')) {
    report(test.result);
  }
});

或自定義報告程序,或某種適配器。

runner.on('test end', function(test) {
  console.log(test.id); //doesn't exist, but i want it to
  report(test);
});

這取決於您的斷言庫。 使用Chai ,您可以選擇輸入文本。

assert.should.exist(result, 'expect Result to exist (Id 43)');

使用Jasmine ,您可以將測試引用添加到您的it()中:

describe("Widget" function() {
  it("should allow creation of widgets (Id 43)", function() {

要使用Mocha自定義報告器,您可以嘗試在測試套件中定義一個。

module.exports = MyReporter;

function MyReporter(runner) {
  var passes = 0;
  var failures = 0;

  runner.on('pass', function(test){
    passes++;
    console.log('pass: %s', test.fullTitle());
  });

  runner.on('fail', function(test, err){
    failures++;
    console.log('fail: %s -- error: %s', test.fullTitle(), err.message);
  });

  runner.on('end', function(){
    console.log('end: %d/%d', passes, passes + failures);
    process.exit(failures);
  });
}

這里確實有2條建議。 第一個是最簡單的方法,就是將您的ID添加到it()的描述中,然后將向您顯示已通過和失敗的內容。 那將是達到目標的最快方法。

但是,如果您想使用更高級的方法,並且可以進行測試以確保設置正確,則可以使用自定義報告程序,如果未設置ID,則允許您通過測試失敗。

我想要的東西和存在的東西是如此接近! 我可以使用報告程序中測試的ctx屬性來解決此問題,例如test.ctx.id

test.js

describe("Widget" function() {
  it("should allow creation of widgets", function() {
    this.id = 43;
    result = widget.create();
    expect.result.to.exist;
  });
});

reporter.js

runner.on('test end', function(test) {
  console.log(test.ctx.id);
  report(test);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM