ITestResult 没有来自 XML 套件的 return 参数
ITestResult doesn't return parameters from XML suite
我一直在尝试从 TestNG XML 套件中检索一些参数。带有 testrail 参考的参数附加到 xml 套件,这些套件应该因已知错误而失败。
我想在生成的报告中包含此参数(为此我们使用范围报告)。我尝试了多种从 xml 套件中检索参数的方法,但返回的参数数量始终为零。
我尝试使用 ITestContext 从 xml 文件中检索数据。
flush() 方法在测试完成后在其中一个侦听器中调用,并接受 ITestContext 参数。我正在尝试从提供的 ITestContext 参数中检索参数。
public void flush( ITestContext testContext ) {
Map<String, String> parameters = ( ( (ITestContext) testContext ).getCurrentXmlTest() )
.getAllParameters();
for ( Map.Entry<String, String> entry : parameters.entrySet() ) {
warn( "testrail_case_id: " + entry.getKey() + " (id): " + entry.getValue() );
}
extent.flush();
}
这是 xml 套件的示例,我们在其中指定一个参数(有时是几个)并引用错误票。更具体地说——我正在尝试检索一个参数名称为 testrail_case_id
的变量
<suite name="MySuite" parallel="false" thread-count="1"
junit="false" verbose="1">
<listeners>
<listener class-name="MyListener"/>
</listeners>
<test name="MyTest">
<parameter name="testrail_case_id" value="684342"/>
<classes>
<class name="MyTestClass"/>
</classes>
</test>
</suite>
问题是 Map<String, String> parameters = ( ( testContext ).getCurrentXmlTest() ).getAllParameters();
总是 returns 零参数(不为空)。
如何从 xml 套件中检索带有 testrail_case_id
的参数?
如果你只想获取一个参数而不是 Map 试试
String browser = context.getCurrentXmlTest().getParameter("Browser");
对我来说效果很好
我试图重现你的问题。我用套装 xml 用 TestNG 创建了一个新的空项目。我创建了两种配置,一种是直接 运行ning class,另一种是 运行ning 通过套件进行测试。 结果是当你直接 运行 class 时 getAllParameters() return 为零,return 当它是 运行 时的参数穿花色 xml.
我的猜测是,您的配置要么直接 运行 class,要么如果选择了 suit,它会绕过或无法访问 suit 文件(不太可能)。
当我尝试获取套装文件名时得到了这些结果:
直接运行ning class:C:\Users****\AppData\Local\Temp\testng-eclipse-300667166\testng-customsuite.xml
运行 through Suit: D:\eclipse-workspace2\TestNGExamples\src\tester 所以看起来如果配置没有设置为使用特定的套装文件,它将使用临时创建的套装 xml.
示例代码:
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import java.util.Map;
import org.testng.ITestContext;
import org.testng.annotations.AfterTest;
public class MyFirstTest {
@Test
public void f(ITestContext testContext) {
Map<String, String> parameters = ( ( (ITestContext) testContext ).getCurrentXmlTest() )
.getAllParameters();
System.out.println("file name : " +( ( (ITestContext) testContext ).getCurrentXmlTest() ).getSuite().getFileName() );
System.out.println("parameters size "+parameters.size() );
for ( Map.Entry<String, String> entry : parameters.entrySet() ) {
System.out.println( "testrail_case_id: " + entry.getKey() + " (id): " + entry.getValue() );
}
}
@BeforeTest
public void beforeTest() {
}
@AfterTest
public void afterTest() {
}
}
这是显示代码、xml 文件、配置及其相应输出的复合屏幕截图:
我一直在尝试从 TestNG XML 套件中检索一些参数。带有 testrail 参考的参数附加到 xml 套件,这些套件应该因已知错误而失败。 我想在生成的报告中包含此参数(为此我们使用范围报告)。我尝试了多种从 xml 套件中检索参数的方法,但返回的参数数量始终为零。
我尝试使用 ITestContext 从 xml 文件中检索数据。
flush() 方法在测试完成后在其中一个侦听器中调用,并接受 ITestContext 参数。我正在尝试从提供的 ITestContext 参数中检索参数。
public void flush( ITestContext testContext ) {
Map<String, String> parameters = ( ( (ITestContext) testContext ).getCurrentXmlTest() )
.getAllParameters();
for ( Map.Entry<String, String> entry : parameters.entrySet() ) {
warn( "testrail_case_id: " + entry.getKey() + " (id): " + entry.getValue() );
}
extent.flush();
}
这是 xml 套件的示例,我们在其中指定一个参数(有时是几个)并引用错误票。更具体地说——我正在尝试检索一个参数名称为 testrail_case_id
的变量<suite name="MySuite" parallel="false" thread-count="1"
junit="false" verbose="1">
<listeners>
<listener class-name="MyListener"/>
</listeners>
<test name="MyTest">
<parameter name="testrail_case_id" value="684342"/>
<classes>
<class name="MyTestClass"/>
</classes>
</test>
</suite>
问题是 Map<String, String> parameters = ( ( testContext ).getCurrentXmlTest() ).getAllParameters();
总是 returns 零参数(不为空)。
如何从 xml 套件中检索带有 testrail_case_id
的参数?
如果你只想获取一个参数而不是 Map 试试
String browser = context.getCurrentXmlTest().getParameter("Browser");
对我来说效果很好
我试图重现你的问题。我用套装 xml 用 TestNG 创建了一个新的空项目。我创建了两种配置,一种是直接 运行ning class,另一种是 运行ning 通过套件进行测试。 结果是当你直接 运行 class 时 getAllParameters() return 为零,return 当它是 运行 时的参数穿花色 xml.
我的猜测是,您的配置要么直接 运行 class,要么如果选择了 suit,它会绕过或无法访问 suit 文件(不太可能)。
当我尝试获取套装文件名时得到了这些结果:
直接运行ning class:C:\Users****\AppData\Local\Temp\testng-eclipse-300667166\testng-customsuite.xml
运行 through Suit: D:\eclipse-workspace2\TestNGExamples\src\tester 所以看起来如果配置没有设置为使用特定的套装文件,它将使用临时创建的套装 xml.
示例代码:
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import java.util.Map;
import org.testng.ITestContext;
import org.testng.annotations.AfterTest;
public class MyFirstTest {
@Test
public void f(ITestContext testContext) {
Map<String, String> parameters = ( ( (ITestContext) testContext ).getCurrentXmlTest() )
.getAllParameters();
System.out.println("file name : " +( ( (ITestContext) testContext ).getCurrentXmlTest() ).getSuite().getFileName() );
System.out.println("parameters size "+parameters.size() );
for ( Map.Entry<String, String> entry : parameters.entrySet() ) {
System.out.println( "testrail_case_id: " + entry.getKey() + " (id): " + entry.getValue() );
}
}
@BeforeTest
public void beforeTest() {
}
@AfterTest
public void afterTest() {
}
}
这是显示代码、xml 文件、配置及其相应输出的复合屏幕截图: