Allure TestOp 是一套可以將測試結果產生成漂亮的測試報表,支援很多測試框架和 Cucumber/Gherkin 語言,我將專注在 .NET,接著,就來動手實作吧。
運作原理
- 執行測試後產生 Report File
- 把 Report File 轉換成 Html
開發環境
- Windows 11
- .NET 6
- Rider 2021.3.2
- SpecFlow.MsTest 3.9.40
- SpecFlow.Allure 3.5.0.73
安裝 Allure
scoop install allure
scoop 安裝方式,請參考
WIndows 套件管理工具 - Scoop 配置與安裝 | 余小章 @ 大內殿堂 - 點部落 (dotblogs.com.tw)
Allure 文件
https://docs.qameta.io/allure
Specflow
開一個 .NET 6 測試專案,
安裝套件
dotnet add package SpecFlow.MsTest
dotnet.exe add package SpecFlow.Allure
加入計算機.feature
Feature: 計算機
Simple calculator for adding two numbers
@mytag
Scenario: 相加兩個數字
Given 第一個數字為 50
And 第二個數字為 70
When 兩個數字相加
Then 結果應該為 120
Scenario Outline: 相加兩個數字(Examples)
Given 第一個數字為 <First>
And 第二個數字為 <Second>
When 兩個數字相加
Then 結果應該為 <Result>
Examples:
| First | Second | Result |
| 50 | 70 | 120 |
| 30 | 40 | 70 |
| 60 | 30 | 90 |
實作 Step.cs
加入 specflow.json
{
"language": {
"feature": "en-US"
},
"stepAssemblies": [
{
"assembly": "Allure.SpecFlowPlugin"
}
]
}
執行所有測試
在 allure-result 可以看到多了幾個檔案
NUnit
安裝套件
dotnet add package NUnit.Allure
測試程式
[TestFixture]
[AllureNUnit]
[AllureSubSuite("Example")]
[AllureSeverity(SeverityLevel.critical)]
public class Tests
{
[Test]
[AllureTag("NUnit","Debug")]
[AllureIssue("GitHub#1", "https://github.com/unickq/allure-nunit")]
[AllureFeature("Core")]
[TestCase(20, 50, 70)]
public void 相加兩個數字(double firstNumber, double secondNumber, double expected)
{
var calculation = new Calculation();
var actual = calculation.Add(firstNumber, secondNumber);
Assert.AreEqual(expected, actual);
}
}
更多的 Attribute 請參考
Attributes · unickq/allure-nunit Wiki (github.com)
Allure 測試結果會直接輸出到 bin\Debug\net6.0\allure-results
vstest.console.exe
接著我們改用 MsTest v2
測試程式碼如下
[TestClass]
public class UnitTests
{
[TestMethod]
[DataRow(50,70,120)]
public void 相加兩個數字(double firstNumber, double secondNumber, double expected)
{
var calculation = new Calculation();
var actual = calculation.Add(firstNumber, secondNumber);
Assert.AreEqual(expected, actual);
}
}
使用 vstest.console.exe 執行測試,產出測試結果
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" Lab.AllureReport4Specflow.dll /logger:trx
allure-mstest clone 這個專案然後建置,這裡需要 MSTestAllureAdapter.Console.exe
最後把 trx,餵給 MSTestAllureAdapter.Console.exe,產生出 allure xml
.\MSTestAllureAdapter.Console.exe Yao_Chang_Yu_110N000082_2022-01-04_13_52_57.trx
把 Allure 測試結果手動複製到 bin\Debug\net6.0\allure-results
啟動 Allure
這時候指定測試結果給 Allure
allure serve D:\src\sample.dotblog\Test\Lab.AllureReport\Lab.AllureReport4Specflow\bin\Debug\net6.0\allure-results
執行結果如下:
或者是先產生 html,再開啟服務
allure generate allure-results -o report/html
allure open report/html
專案位置
sample.dotblog/Test/Lab.AllureReport at master · yaochangyu/sample.dotblog (github.com)
參考資料
結論
這篇很粗略的介紹 Allure 的建立方式,其中還有很多的細節,由於時間的關係,我還沒有玩得很透徹,希望,接下來可以多花一點時間來研究它。
Allure .NET 支援 Specflow、NUnit 兩個 Test Provider 可以很無腦的整合到 Allure Test Report,不過,其餘的 Test Provider 仍然可以透過Test Result (*.trx),整合到 Allure Test Report
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET