我想知道一种从我的suite.xml或代码本身传递一个参数在侦听器中的方法
我需要在并行测试中确切地知道我在哪个设备上运行测试才能制作一些报告
这是我已经/希望实现的一个例子
套件文件
<suite name="SearchButton" parallel="tests" thread-count="5">
<test name="SamsungS6">
<parameter name="deviceUDID" value="04157df40862d02f"/>
<classes>
<class name="MyTestScenario"/>
</classes>
</test>
</suite>
或
@Test
public void researchText (){
String DeviceUDID = "1234";
}
我希望能够在我的侦听器中找到设备UDID
public void onTestSkipped(ITestResult result) {
System.out.println("My deviceUDID ");
}
我试图用
找到它System.getProperty("deviceUDID") // or
result.getAttribute() // or
result.getParameters()
没有成功
关于如何做的任何想法?
答案 0 :(得分:0)
get*
,则 set*
方法无效。
我看到两个选项:
ITestContext
(ITestResult#getTestContext()
)中的数据进行测试。见the related documentation。 @UDID("1234")
)。但如果你想避免重复,那么在测试中使用它可能会更困难。根据你的例子:
@Test
public void researchText(ITestContext context){
String DeviceUDID = "1234";
context.setAttribute("UDID", DeviceUDID)
}
public void onTestSkipped(ITestResult result) {
System.out.println("My deviceUDID " + result.getTestContext().getAttribute("UDID"));
}
或
<suite name="SearchButton" parallel="tests" thread-count="5">
<test name="SamsungS6">
<parameter name="deviceUDID" value="04157df40862d02f"/>
<classes>
<class name="MyTestScenario"/>
</classes>
</test>
</suite>
@Parameters({ "deviceUDID" })
@Test
public void researchText (String DeviceUDID, ITestContext context){
context.setAttribute("UDID", DeviceUDID)
}
public void onTestSkipped(ITestResult result) {
System.out.println("My deviceUDID " + result.getTestContext().getAttribute("UDID"));
}
答案 1 :(得分:0)
我终于找到了办法。 它可以被视为一种解决方法,但它可以完成工作。
在ITestListener监听器中,我发现我们有一个onStart
方法,允许我从.xml文件中访问参数
deviceUDID = context.getCurrentXmlTest().getParameter("deviceUDID");
现在我把它放在监听器中我只需要将它保存在变量中并在onTestSkipped
方法中访问它