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

标签 jenkins jenkins-plugins testcase jenkins-workflow testrail

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

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

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

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

UI script output

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

我能想到的方法:

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

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

最佳答案

这不是特定于 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 或其他您的代码可以读取的脚本来定义和设置一些环境变量,这样您就不必处理传递一些非常基本的键值对的文件

关于jenkins - 注释/获取/映射 Testrail 测试用例 ID 到本地 Java TestNG 测试(Jenkins Test Rail 集成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395753/

相关文章:

python - 如何在 .yaml 文件环境变量中声明值并在 Jenkins 中调用它

java - 在Java程序中访问Jenkins环境变量

Jenkins 无法在 kubernetes 上安排任务

testing - 将测试用例添加到 TestLink

linux - 在 linux 机器上通过 jenkins 运行 selenium 脚本时,firefox 没有启动

jenkins - 从Jenkins管道向Github拉取请求添加评论

mysql - 无法在EC2上同时运行Jenkins和MySQL的Docker容器

jenkins-plugins - Bitbucket 构建状态通知程序 - 无法提取访问 token

c++ - 从 Codechef March Long 竞赛中获得 ANUGCD 中的 WA

python - 编写可重用(参数化) unittest.TestCase 方法