将 ITestContext 属性值传递给 onTestStart 方法时传递的空值

萨梅拉·德席尔瓦

我想将我使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章