【发布时间】:2022-11-30 04:48:03
【问题描述】:
我正在尝试使用 Xray 的 API 来发布我的单元测试的结果。 我希望在我的所有测试运行完毕后运行发布结果的方法(然后我有一个包含我要发布的结果的 xml 文件)。
但我不确定我是否了解其机制是如何工作的——看起来每次测试后都会执行拆解。
我想要达到的目标:
-
创建一个将在所有测试完成后执行一次的方法,该方法应将生成的带有测试结果的 xml 文件发布到外部 API。
[TestFixture] public class ProjectEmailAgentUnitTests { private ProjectEmailAgent _emailAgent; [SetUp] public void Setup() { _emailAgent = new ProjectEmailAgent(); } [Test, Property("Requirement", "IUV-23")] [TestCase(" ", false)] [TestCase("mcp a", false)] [TestCase("mc pa", false)] [TestCase("mcpa", true)] public void isKeyWordExisting(string subject, Boolean expected) { Assert.That(_emailAgent.isKeyWordExisting(subject), Is.EqualTo(expected)); } [TearDown] public async Task TestTearDown(){ var fileName = "filename.xml"; var fileName2 = "xray.json"; var url = "https://xray.cloud.getxray.app/api/v1/import/execution/nunit/multipart"; using (var formContent = new MultipartFormDataContent("NKdKd9Yk")) { formContent.Headers.ContentType.MediaType = "multipart/form-data"; // 3. Add the filename C:\\... + fileName is the path your file Stream fileStream = System.IO.File.OpenRead("C:/test/Projects/ProjectEmailAgentTest/bin/Debug/net6.0/TestResults/" + fileName); formContent.Add(new StreamContent(fileStream), fileName, fileName); Stream fileStream2 = System.IO.File.OpenRead("C:/test/Projects/ProjectEmailAgentTest/" + fileName2); formContent.Add(new StreamContent(fileStream2), fileName2, fileName2); using (var client = new HttpClient()) { // Bearer Token header if needed client.DefaultRequestHeaders.Add("Authorization", "Bearer " + "token"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data")); try { // 4.. Execute the MultipartPostMethod var message = await client.PostAsync(url, formContent); // 5.a Receive the response Console.WriteLine(message); } catch (Exception ex) { // Do what you want if it fails. throw ex; } }
【问题讨论】:
-
运行 NUnit 测试的方法有很多种,例如 nunit3-console.exe、Visual Studio 测试资源管理器等。请说明您是如何运行测试的,以便能够给出答案。
-
@Charlie 抱歉没有提及。目前我只是在 Visual Studio Code 中运行它们(在上下文中运行测试)。
-
如果我使用 [order(n)] 属性并将我的拆解指定为 [测试],似乎我能够实现我想要的。不是我真正想要的,因为这个方法将成为测试结果的一部分,但至少它以我想要的方式执行......