【问题标题】:How to pass class name dynamically in to class tag in Testng XML如何将类名动态传递给Testng XML中的类标签
【发布时间】:2018-12-24 07:51:07
【问题描述】:

我需要在 Testng XML 中将类名动态传递给 <Class>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
  <test thread-count="5" name="Test">
      <parameter name="browser" value="chrome"></parameter>
    <classes>
      <class name="testCaseWithKeywordFramework.TestCase1_Login"/>
    </classes>
  </test> <!-- Test -->

</suite> <!-- Suite -->

在上面的 XML 代码中,我想动态传递类名,谁能帮助我。

【问题讨论】:

  • 我没明白。为什么要动态传递它?或者你的意思是你想以编程方式使用应该从代码生成的类?
  • 你的意思是你想以编程方式使用类..
  • 我想以编程方式使用类名
  • 为此您必须以编程方式创建 testNG xml。您创建了吗?
  • 不,先生,实际上我对以编程方式创建 testNG xml 没有任何想法

标签: java xml selenium testng


【解决方案1】:

可以通过在运行时创建套件文件本身来实现。检查这个例子 - http://www.testautomationguru.com/selenium-webdriver-creating-testng-suite-xml-from-spreadsheet/

【讨论】:

  • 感谢您提供的信息..您明白我在寻找什么..但我会等待一些其他信息..如果有人能解释一下..否则我会接受您的回答.
  • 先生,我有一个疑问。使用上面的代码后..我必须运行 testNG XML 或者我可以直接运行我正在使用的类?
【解决方案2】:

您可以非常轻松地从自己的程序中调用 TestNG:

TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { Run2.class });
testng.addListener(tla);
testng.run();

此示例创建一个 TestNG 对象并运行测试类 Run2。

更多可以参考here

同样,您可以在 testng.xml 文件上调用 TestNG,也可以自己创建一个虚拟 testng.xml 文件

例如,假设您要创建以下虚拟文件:

<suite name="TmpSuite" >
  <test name="TmpTest" >
    <classes>
      <class name="test.failures.Child"  />
    <classes>
    </test>
</suite>

您将使用以下代码:

XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass("test.failures.Child"));
test.setXmlClasses(classes) ;  

然后你可以将这个 XmlSuite 传递给 TestNG:

List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();

【讨论】:

  • 谢谢你,先生,这很有用,我会推荐它,如果我能理解..我肯定会接受你的。
  • @SatishRongala :没问题的芽。试试看。
  • 先生,我有一个疑问。使用上面的代码后..我必须运行 testNG XML 或者我可以直接运行我正在使用的类?
  • testng.xml 将通过运行您的代码来创建。所以不需要手动运行 testng.xml,直接运行类就可以了。
  • 真的非常感谢你先生.. 现在我会尝试你的代码:)
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 2015-08-19
  • 1970-01-01
  • 2020-10-20
  • 2012-09-16
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多