我的组织正在重新调整我们的QA流程,并购买了测试管理工具TestRail。我们正在将所有现有的UI自动化测试导入TestRail,以便我们可以为每个测试创建测试计划并存储历史测试运行数据。在 TestRail 中, 您 可以 进行 测试 运行, 这些 运行 包含 完整 测试 库 的 子集,
从而 帮助 您 测试 功能 而 不必 运行 所有 测试。我们的测试库是在Visual Studio中使用Selenium开发的,每个测试都设置为NUnit单元测试。每个测试都有一个 NUnit 属性"tr_id",该属性映射到其 TestRail 测试用例的标识符。
我正在通过TestRail API开发一个集成,将每个测试的测试结果推送到TestRail,但按照它目前的工作方式,所有测试都将运行,即使是不在给定TestRail测试计划中测试的测试。通过TestRail API,我能够提取给定测试计划中所有测试的列表,并将所有测试ID存储到一个列表中(然后与Selenium NUnit测试tr_id相当(。
我最期待回答的问题是,是否有任何方法可以获取所有 NUnit 测试及其属性,然后我可以解析这些测试及其属性以创建要运行的测试子集,同时忽略不属于 TestRail 测试计划的所有其他测试。
我遇到了一个问题,即我们如何使 UI 框架仅运行测试运行中的测试运行中的测试,如 TestRail 中确定的测试计划中标识的测试。
我正在尝试做的是以下内容(伪代码(:
listA = TestRail.GetTestsIdsInPlan(planA);
listB = NUnit.GetAllTestsIds(); //from custom property tr_id
listC = empty list;
foreach(testId id in listA)
{
if (listB.Contains(id))
{
listC.Add(id);
}
}
通过这样做,我将运行 listC 中的所有测试,因为 id 与测试运行中的测试匹配。
任何帮助都非常感谢!
听起来你想创建特定的测试执行列表,只有在满足某些条件时才会执行测试用例 - 即测试计划的一部分或tr_id不为空。
此问题最好在自动化代码本身中处理。我建议浏览代码并根据您希望如何运行它们来分离测试用例 - 创建一个名为SmokeTestCases
的文件夹,并且只将烟雾套件中的自动测试用例放在那里。您可以创建另一个名为NeedsTestRailId
的文件夹,并将所有未标记的自动化测试用例放入其中。您可以对回归测试用例等执行相同的操作。
一旦你的测试用例在代码本身中被拆分,这将使创建特定的执行列表变得更加容易。
使用 NUnit.ConsoleRunner,您可以执行测试用例的特定子集。首先,您要创建执行列表 - 这些是简单的.txt文件,其中包含要运行的测试的命名空间。假设您的自动化项目称为TestAutomationSuite
并且它包含文件夹SmokeTest
、RegressionTest
和NotTagged
:
烟雾测试列表.txt
TestAutomationSuite.SmokeTest
回归测试列表.txt
TestAutomationSuite.RegressionTest
还可以使用此命名空间语法来选择特定的测试,而不是整个文件夹:
TestAutomationSuite.RegressionTest.MyTestClass_1.MyTest_1
TestAutomationSuite.RegressionTest.MyTestClass_1.MyTest_2
TestAutomationSuite.RegressionTest.MyTestClass_2
因此,这个问题的大部分可以通过重新组织自动化代码解决方案以及创建可传递到 NUnit.ConsoleRunner 的智能执行列表来解决。
为了实际执行这些测试,您需要通过命令行使用 NUnit.ConsoleRunner。这也将生成一个有用的XML输出文件,您可以解析并将结果发布到TestRail。
文档可在此处找到: https://github.com/nunit/docs/wiki/Console-Command-Line
简而言之,您可以像这样运行NUnit.ConsoleRunner:
- 打开命令提示符
cd ProjectDirectorypackagesNUnit.ConsoleRunnertools
nunit3-console C:ProjectDirectoryProject.dll C:ProjectDirectoryRegressionTestList.txt
有关详细信息,请参阅 NUnit 文档,但第一个参数是要运行的 C# 项目.dll的路径,第二个参数是要运行的执行列表的路径。
如果您不喜欢创建特定测试运行列表的想法,可以尝试使用 NUnit.ConsoleRunner 支持的--where
标志。我个人没有使用过这个,所以如果我是你,我会参考这方面的文档。
希望这有所帮助。请随时问我任何其他问题。