0

我的组织正在重新调整我们的 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 与测试运行中的测试匹配。

任何帮助深表感谢!

4

1 回答 1

0

听起来您想创建特定的测试执行列表,只有在满足某些条件时才会执行测试用例——即,您的测试计划的一部分或 tr_id 不是空白的。

这个问题最好在自动化代码本身中处理。我建议仔细阅读代码并根据您想要运行它们的方式分离出测试用例——创建一个名为 的文件夹SmokeTestCases,并且只将您的烟雾套件中的自动化测试用例放在那里。您可以创建另一个名为 的文件夹NeedsTestRailId,并将所有未标记的自动化测试用例放入其中。您可以对回归测试用例等做同样的事情。

一旦您的测试用例在代码本身中被拆分,这将更容易创建特定的执行列表。

使用 NUnit.ConsoleRunner,您可以执行特定的测试用例子集。首先,您要创建执行列表——这些是简单的 .txt 文件,其中包含您希望运行的测试的名称空间。假设您的自动化项目被调用TestAutomationSuite并且它包含文件夹SmokeTestRegressionTestNotTagged

SmokeTestList.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:

  1. 打开命令提示符
  2. cd ProjectDirectory\packages\NUnit.ConsoleRunner\tools
  3. nunit3-console C:\ProjectDirectory\Project.dll C:\ProjectDirectory\RegressionTestList.txt

更多信息可以在 NUnit 文档中找到,但第一个参数是您希望运行的 C# 项目的 .dll 的路径,第二个参数是您希望运行的执行列表的路径。

如果您不喜欢创建特定测试运行列表的想法,可以尝试使用--whereNUnit.ConsoleRunner 支持的标志。我没有亲自使用过这个,所以如果我是你,我会参考这方面的文档。

希望这个对你有帮助。随时问我任何其他问题。

于 2019-09-24T21:05:27.217 回答