我想将我使用 ITestContext 设置的变量传递给 onTestStart
public void login(ITestContext Test){
Test.setAttribute("nodeName","05 test");
Test.setAttribute("nodeDetails","05 This belongs to regresion test");
}
我使用了下面的代码,但只打印了空值。
@Override
public void onTestStart(ITestResult result) {
//get the node name
String node= (String) result.getTestContext().getAttribute("nodeName");
String nodeDetails= (String) result.getTestContext().getAttribute("nodeDetails");
System.out.println("onTestStart node is "+node);
System.out.println("onTestStart nodeDetails is* "+nodeDetails);
}
但是,当我将其放入 onTestSuccess 方法时,我确实注意到了这一点。
我最初的要求是在onTestStart 方法中传递用于创建范围报告节点的节点名称和节点详细信息。请帮忙。
test = report.createTest(result.getMethod().getMethodName()).createNode(node).pass(nodeDetails);
onStart:在执行任何测试方法之前调用此方法。如果需要,您可以使用它来设置额外的属性。
onTestStart:在调用任何测试方法之前调用此方法。这可用于指示特定测试方法已启动。
@Override
public void onStart(ITestContext context) {
context.setAttribute("nodeName","05 test");
context.setAttribute("nodeDetails","05 This belongs to regresion test");
}
=== 编辑
如果要在 ITestContext 之前添加一些属性(运行所有测试),请使用 @BeforeTest
使用@BeforeTest,这将在所有其他测试运行之前运行一次。
@BeforeTest
public void SetData(ITestContext context)
{
context.setAttribute("nodeName","05 test");
}
如果你想做一些应该在(EACH)测试方法之前运行的逻辑,那么使用
@BeforeMethod
public void beforeMethod(ItestContext testContext) {
// Do testContext related processing
}
如果以上都不是,并且您想将自定义数据传递给每个 @Test 案例,那么 DataProvider 就是您要寻找的。
一个例子:
@DataProvider(name = "node-05-provider")
public Object[][] dataProvider(){
return new Object[][]{
{"node-05"}};
}
@Test(dataProvider="node-05-provider")
public void search(String data){
System.out.println(data); // "node-05"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句