当前位置: 首页 > 知识库问答 >
问题:

ITestResult不返回XML套件中的参数

封烈
2023-03-14

我一直试图从TestNG XML套件中检索一些参数。带有testrail引用的参数附加到xml套件,这些套件被认为会因已知错误而失败。我想在生成的报告中包含这个参数(我们使用程度报告)。我尝试了许多从xml套件中检索参数的方法,但返回的参数总是为零。

我尝试使用ITestContext从xml文件中检索数据。

  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();
}
<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>

共有1个答案

通和裕
2023-03-14

我试图重现你的问题。我用TestNG创建了一个新的空项目,该项目带有suit XML。我创建了两个配置,一个直接运行类,另一个通过套件运行测试。结果是getAllParameters()在直接运行类时返回零,在通过suit XML运行时返回参数

我的猜测是,不知何故,您的配置要么直接运行类,要么如果选择了suit,它绕过或无法访问suit文件(不太可能)。

当我尝试获取西装文件名时,得到了以下结果:

示例代码:

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() {
}
}
 类似资料:
  • 问题内容: 我知道我不是第一个遇到这个问题的人,但是我似乎找不到有效的解决方案 使用网络服务集返回json时,.net仍将其包装在XML包装器中。 我搜索并尝试了很多东西 正如某些帖子中所建议的,我尝试将各种httphandler设置添加到我的web.config中,但是这些没有效果。我也不认为这是必要的,因为我正在使用全新的win7 / iis7.5 / .net4机器。我读到,由于.net 3

  • 我试图制作一个for循环脚本,使用Angular创建订单,并将其添加到网页中。我在使用某些for循环时遇到了问题,因为当我使用控制台时。log(),它只输出外部循环,不输出内部循环。我需要把变量的顺序传递给另一个函数,所以我需要这个顺序来获得正确的数据。 结果: 它重复最后一个外环值,而不输出内环值。我对Javascript还是很陌生的,所以我需要一些洞察力和解决方案,也许还有简单的方法?谢谢!

  • 我正在使用Java/JT400驱动程序将一个应用程序集成到AS400。当我从参数文件中提取数据时,我遇到了一个问题--检索到的数据似乎是编码的。 在此之前,我没有与AS400一起工作的经验,真的需要一些帮助。此问题仅与参数文件有关。数据库表工作正常。

  • 我正在使用maven运行我的集成测试,这些测试在TestNG套件中。在Eclipse下运行套件时--我的测试套件运行成功。当运行“mvn verify”来运行我的集成测试时,我看到failsafe插件配置调试打印,其中包括suite.xml文件和我编译的类的正确路径,但它没有执行我的测试(构建过程成功完成)。 我尝试过运行相同的pom配置,但是使用了surefire插件而不是failsafe插件,

  • 问题内容: 我有以下查询: 这将同时返回“匹配”对象(整个文档)和“ inner_hits”对象(嵌套在匹配内部)。 有没有办法让我只返回出现在“ inner_hits”结果中的匹配“查询”元素,而没有获取整个文档? 问题答案: 应该可以通过以下方式 在顶层 禁用source- field 来实现

  • 我注意到,如果没有where(),returning()操作不可用。这是故意的吗? 这项工作: 这不起作用: 我应该考虑这个“黑客”吗?