将 ITestContext 属性值传递给 onTestStart 方法时传递的空值
null values passed when passing ITestContext attribute value to onTestStart method
我想将使用 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 方法 中传递节点名称和节点详细信息以创建 extent 的报告节点。请帮忙。
test = report.createTest(result.getMethod().getMethodName()).createNode(node).pass(nodeDetails);
onStart: This method is invoked before any test method gets executed.
You can use this to set your extra attributes if you need to.
onTestStart: This method is invoked before any tests method is
invoked. This can be used to indicate that the particular test method
has been started.
@Override
public void onStart(ITestContext context) {
context.setAttribute("nodeName","05 test");
context.setAttribute("nodeDetails","05 This belongs to regresion test");
}
=== 已编辑
如果你想在ITestContext之前添加一些属性(ALL Tests都是运行),那么使用@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"
}
我想将使用 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 方法 中传递节点名称和节点详细信息以创建 extent 的报告节点。请帮忙。
test = report.createTest(result.getMethod().getMethodName()).createNode(node).pass(nodeDetails);
onStart: This method is invoked before any test method gets executed. You can use this to set your extra attributes if you need to.
onTestStart: This method is invoked before any tests method is invoked. This can be used to indicate that the particular test method has been started.
@Override
public void onStart(ITestContext context) {
context.setAttribute("nodeName","05 test");
context.setAttribute("nodeDetails","05 This belongs to regresion test");
}
=== 已编辑
如果你想在ITestContext之前添加一些属性(ALL Tests都是运行),那么使用@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"
}