如何解决测试后清除覆盖的 testContext 值
我扩展了 TestListenerAdapter 并添加了我自己的自定义 testName 值。这特别适用于我有一个数据提供者并且我使用数据提供者值来设置名称的用例。
这里是监听器的样子:
public class CustomListener extends TestListenerAdapter {
@Override
public void onTestSuccess(final ITestResult tr) {
setTestNameInReport(tr);
super.onTestSuccess(tr);
}
@Override
public void onTestFailure(final ITestResult tr) {
setTestNameInReport(tr);
super.onTestSuccess(tr);
}
private void setTestNameInReport(final ITestResult tr) {
try {
ITestContext ctx = tr.getTestContext();
Set<String> attributes = ctx.getAttributeNames();
for ( String x : attributes ) {
if (x.contains("testName")) {
Field method = TestResult.class.getDeclaredField("m_method");
System.out.println("Printing the method name: " + method.getName());
method.setAccessible(true);
method.set(tr,tr.getmethod().clone());
Field methodName = BaseTestMethod.class.getDeclaredField("m_methodName");
methodName.setAccessible(true);
methodName.set(tr.getmethod(),ctx.getAttribute( x ));
break;
}
}
}
catch (Exception e) {
e.printstacktrace();
}
}
}
我正在测试用例中设置 testName。
但是,很少有没有数据提供者并且不需要任何自定义测试名称的情况,我如何清除测试上下文值?
解决方法
您可以使用 removeAttribute()
的 ITestContext
方法。使代码看起来像:
@AfterMethod()
public void clearContext(ITestContext context){
context.removeAttribute("testName");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。