我正在尝试使用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的映射呢?
此外,任何关于将结果发回测试轨的建议都是有用的。
发布于 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永远不会改变,所以您可以在测试中硬编码这些代码。
以下是我为此目的所用的东西:
@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的方法来获取在我的teardown方法中要使用的测试方法名,但是我确信有多种方法可以做到这一点。一旦您有了测试方法名称,这里就是我读取注释的方式:
@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或您的代码可以读取的其他脚本来定义和设置一些环境变量,这样您就不必处理传递一些非常基本的键值对的文件了。
https://stackoverflow.com/questions/35395753
复制相似问题