注释/获取/映射 Testrail 测试用例 ID 到本地 Java TestNG 测试(Jenkins Test Rail Integration)

Posted

技术标签:

【中文标题】注释/获取/映射 Testrail 测试用例 ID 到本地 Java TestNG 测试(Jenkins Test Rail Integration)【英文标题】:Annotating/Fetching/mapping Testrail test case ID to the local Java TestNG test (Jenkins Test Rail Integration) 【发布时间】:2016-02-14 18:53:06 【问题描述】:

我正在尝试使用 Testrail 作为测试用例管理系统,因此, 将 testrail 与 Jenkins 集成会很有用。

这就是我想要实现的目标:

假设我在 testrail 中手动创建了三个带有案例 ID 的测试用例 C1、C2 和 C3,这些测试用例将具有一些独特的自动化测试名称,例如 A1、A2 和 A3(在更多信息中,testrail 中将有一个字段具有如此独特的 信息)

当我点击“开始自动化测试”按钮并从 testrail 运行 Jenkins 作业时(考虑到我已经为具有此按钮的 testrail 实现了 UI 脚本):

,我想运行一个脚本/东西来获取所选测试用例的用例 ID,并将这些 ID 临时注释到实际的 Java 测试中,以便它可以运行这些特定的测试并将结果发布回 Testrail。

我能想到的方法:

当我点击 Testrail 上的“开始自动化测试”按钮时,我可以创建一个脚本来运行以创建一个 XML 文件,该文件将包含从 Testrail 中选择的所需测试用例。然后,此 XML 将作为 Jenkins 作业的默认输入提供,它将运行 XML 文件中提到的测试用例。此 XML 将是临时的,每次从 Testrail 中进行选择时都会被替换。然而,你是怎么做到的?我是 Testrail 的新手并阅读了它的 API,看起来 API 将有助于将结果发布回 Testrail。但是,我们如何实现ID的映射呢?

此外,任何关于将结果发布回 Testrail 的建议都会很有用。

【问题讨论】:

你是如何将你的开始按钮与 jenkins 或项目联系起来的? @optimist_creeper 对按钮单击事件进行 AJAX 调用,这应该调用 TestRail 服务器上的文件。该文件可以是 php 或 Python,其中包含 Jenkins 远程构建运行的代码。 【参考方案1】:

这不是 TestNG 特定的,但您可以在 java 中进行自定义注释。您可以通过 api 在测试运行中通过测试 ID(使用 add_result)或案例 ID 和运行 ID(使用 add_result_for_case)更新 TestRail 测试。 http://docs.gurock.com/testrail-api2/reference-results

case id 永远不会改变,因此您可以在测试中对这些进行硬编码。

这是我为此目的使用的:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestData

    int testId() default 0;
    String[] tags() default "";

然后我的测试方法看起来像这样(使用 Junit,但与其他框架应该没有太大区别):

@Test
@TestData(
        testId = 177,
        tags = "smoke", "authentication"
)
public void testName()

    //Do the test

然后我使用特定于 JUnit 的方法来获取要在我的拆卸方法中使用的测试方法名称,但我确信有多种方法可以做到这一点。一旦你有了测试方法名称,我就是这样阅读注释的:

@After
public void baseTearDown() throws Exception

    //Good place to record test results
    Method testMethod = getClass().getMethod(testName);
    if(testMethod.isAnnotationPresent(TestData.class))
    
        TestData testData = testMethod.getAnnotation(TestData.class);
        //Do something with testData.testId();
        System.out.println("Test ID = " + testData.testId());
    

    //other cleanups

这个 mkyong 链接提供了一些非常基本的示例,它们既可以创建注释,也可以使用反射阅读它。这是我以前开始的: https://www.mkyong.com/java/java-custom-annotations-example/

如果您在代码中开始测试运行,那么您只需跟踪测试运行 ID 并根据需要使用它。如果没有,我的偏好是使用 Jenkins 或您的代码可以读取的其他脚本来定义和设置一些环境变量,这样您就不必处理为一些非常基本的键值对传递文件

【讨论】:

以上是关于注释/获取/映射 Testrail 测试用例 ID 到本地 Java TestNG 测试(Jenkins Test Rail Integration)的主要内容,如果未能解决你的问题,请参考以下文章

SOAPUI 和测试轨集成

比Testlink好用的测试用例管理平台都有哪些?

在TestRail中更新TestCafe脚本执行状态(已通过/未通过)

unittest单元测试框架中的参数化及每个用例的注释

Mybatis

在 Junit5 中记录每个测试用例的执行时间的注释