我使用的是诱惑V1.4.8 + TestNG。看起来TestNG适配器错误地将@AfterMethod放在报告中 - 基本上它将AfterMethod从测试用例放入下一个测试用例。
以下是简单的代码:
@Step("a test1")
@Test
public void Test1(){
}
@Step("a test2")
@Test
public void Test2(){
}
@Step("before method")
@BeforeMethod
public void beforeMethod(){
}
@Step("after method")
@AfterMethod
public void methodCleanup()
{
}
以下是生成的报告:
<test-cases>
<test-case start="1424347388060" stop="1424347388730" status="passed">
<name>Test1</name>
<steps>
<step start="1424347388011" stop="1424347388014" status="passed">
<name>before</name>
<title>before test</title>
<attachments/>
<steps/>
</step>
<step start="1424347388036" stop="1424347388036" status="passed">
<name>beforeMethod</name>
<title>before method</title>
<attachments/>
<steps/>
</step>
<step start="1424347388067" stop="1424347388067" status="passed">
<name>Test1</name>
<title>a test1</title>
<attachments/>
<steps/>
</step>
</steps>
<labels>
<label name="host" value=""/>
<label name="thread" value=""/>
</labels>
</test-case>
<test-case start="1424347388747" stop="1424347389056" status="passed">
<name>Test2</name>
<steps>
<step start="1424347388739" stop="1424347388739" status="passed">
<name>methodCleanup</name>
<title>after method</title>
<attachments/>
<steps/>
</step>
<step start="1424347388746" stop="1424347388746" status="passed">
<name>beforeMethod</name>
<title>before method</title>
<attachments/>
<steps/>
</step>
<step start="1424347388750" stop="1424347388750" status="passed">
<name>Test2</name>
<title>a test2</title>
<attachments/>
<steps/>
</step>
</steps>
</test-case>
</test-cases>
答案 0 :(得分:1)
TestNG适配器的问题。在我们的适配器中,我们使用ITestListener侦听器和onTestSuccess
,onTestFailure
,onTestFailedButWithinSuccessPercentage
和onTestSkipped
方法将测试标记为已完成。但是TestNG在 @AfterMethod
之前调用方法。
我不知道有没有办法处理之前和 afters (也许我们可以使用其他侦听器,例如IInvokedMethodListener)。您可以调查此问题并向我们发送拉取请求。
希望有所帮助
New Allure TestNG集成支持测试夹具。因此,您需要升级到Allure 2.有关详细信息,请参阅文档https://docs.qameta.io/allure/2.0/#_testng