我想在运行测试套件之前记录它的名称。我成功记录了方法名称,但无法弄清楚如何使用套件执行相同的操作。我的代码:
编辑:我找到了解决方案。这是需要的人的代码。
public class TestCase {
private Logger logger = LogManager.getLogger(this.getClass());
protected static WebDriver driver;
private String url = PropertyManager.getUrl();
private String browser = PropertyManager.getBrowser();
@BeforeSuite
protected void setUp(ITestContext tes) {
System.setProperty("webdriver.chrome.driver","chromedriver.exe");
System.setProperty("webdriver.chrome.logfile", "chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");
driver = new ChromeDriver();
driver.get(url);
driver.manage().window().maximize();
logger.info("Starting up {} driver.", browser);
logger.info(tes.getSuite().getName());
}
答案 0 :(得分:1)
这可以通过在项目中添加Listener来完成。在调用预期方法之前,请使用IInvokedMethodListener
执行活动。
步骤:
创建一个类,说ListenerClass
并在其中实现IInvokedMethodListener
接口。
public class ListenerClass implements IInvokedMethodListener
添加所有未实现的方法,并在beforeInvocation
方法中添加以下代码:
@SuppressWarnings("deprecation")
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
try {
if (method.getTestMethod().getMethod().getAnnotation(org.testng.annotations.BeforeSuite.class)
.toString() != null) {
System.out.println("Before suite annoted method name - " + method.getTestMethod().getMethodName());
System.out.println("Test suite name - " + testResult.getTestContext().getSuite().getName());
}
} catch (Exception e) {
}
}
在您的testng.xml
文件中添加侦听器类
<listeners>
<listener class-name="ListenerClass"></listener>
</listeners>
<test name="Test_Name">
<classes>
<class name="Test_Class_Name" />
</classes>
</test> <!-- Test -->
以TestNGSuite身份运行testng.xml
,您将获得预期的结果。让我知道是否有东西