是否可以从被调用的方法中编写testng测试的名称?

时间:2017-11-16 07:26:15

标签: java selenium

我正在使用Java(TestNG和IntelliJ)运行Selenium测试,目前正在处理我的报告框架。 我的测试设置看起来像这样:

@Test
public void testLogin(){
  myKeyword.login();
}

myKeyword是我创建的一类关键字,名为login。 login关键字如下所示:

public void login(){
  myPage.typeInTextBox("Username");
  myPage.typeInTextBox("Password");
  myPage.buttonClick("Login");
}

我的验证内置于方法" buttonClick"和" typeInTextBox"。它们看起来像:

try{
  driver.findelement(By.id("myButton")).click();
}
catch (Exception e){
  Assert.fail("Could not click on the button.");
}

我想知道的是,"按钮是否可以点击"知道调用它的测试名称的方法?

我想替换" Assert.fail ..."使用我自己的函数创建一个文本文件,我将用它来记录我想要的信息,这将需要包括失败的测试名称(在这种情况下" testLogin)。

1 个答案:

答案 0 :(得分:3)

一种选择是在某处设置当前测试的名称,可能是静态变量。如何为TestNG做到这一点被描述为here

public class Test { 
    @BeforeMethod
    public void handleTestMethodName(java.lang.reflect.Method method) {
        GlobalVariables.currentTestName = method.getName(); 
    }
...
}