首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注释/获取/映射到本地TestNG测试的测试用例ID (Jenkins集成)

注释/获取/映射到本地TestNG测试的测试用例ID (Jenkins集成)
EN

Stack Overflow用户
提问于 2016-02-14 18:53:06
回答 1查看 4.5K关注 0票数 6

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

这就是我想要达到的目标:

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

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

,我希望运行一个脚本/某个东西,它接受所选测试用例的ID,并将这些ID临时注释到实际的Java测试中,以便它能够运行这些特定的测试并将结果发布回Test轨。

我能想到的办法:

当我按下Testrail上的"Start Automated test“按钮时,我可以创建一个脚本来创建一个XML文件,该文件将包含所选的测试用例。然后,这个XML将作为Jenkins作业的默认输入提供,它将运行XML文件中提到的测试用例。此XML将是临时的,每次从测试轨中选择时都将被替换。但是,你是如何做到的呢?我是测试轨的新手,我阅读了它的API,看起来API将有用,可以将结果发回测试轨。但是,如何实现ID的映射呢?

此外,任何关于将结果发回测试轨的建议都是有用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-18 22:34:35

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

case id永远不会改变,所以您可以在测试中硬编码这些代码。

以下是我为此目的所用的东西:

代码语言:javascript
复制
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestData
{
    int testId() default 0;
    String[] tags() default "";
}

然后,我的测试方法如下所示(使用Junit,但与其他框架没有太大的不同):

代码语言:javascript
复制
@Test
@TestData(
        testId = 177,
        tags = {"smoke", "authentication"}
)
public void testName()
{
    //Do the test
}

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35395753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档