gpt4 book ai didi

java - 动态创建TestNG.xml文件并传递参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:09:38 24 4
gpt4 key购买 nike

我必须使用动态 testng.xml 文件执行测试脚本,这意味着我必须通过代码创建 testng.xml 文件并将参数传递给 @Test 方法以编程方式。

为此,我创建了两个 Java 文件 DynamicTestNG.java,它们应该生成 testng.xml 文件并运行 SampleClass.java,其中 @测试方法和参数都写好了。

DynamicTestNG.java

public class DynamicTestNG {

public void runTestNGTest(Map<String,String> testngParams) {

//Create an instance on TestNG
TestNG myTestNG = new TestNG();

//Create an instance of XML Suite and assign a name for it.
XmlSuite mySuite = new XmlSuite();
mySuite.setName("MySuite");

//Create an instance of XmlTest and assign a name for it.
XmlTest myTest = new XmlTest(mySuite);
myTest.setName("MyTest");

//Add any parameters that you want to set to the Test.
myTest.setParameters(testngParams);

//Create a list which can contain the classes that you want to run.
List<XmlClass> myClasses = new ArrayList<XmlClass> ();
myClasses.add(new XmlClass("SampleClass"));

//Assign that to the XmlTest Object created earlier.
myTest.setXmlClasses(myClasses);

//Create a list of XmlTests and add the Xmltest you created earlier to it.
List<XmlTest> myTests = new ArrayList<XmlTest>();
myTests.add(myTest);

//add the list of tests to your Suite.
mySuite.setTests(myTests);

//Add the suite to the list of suites.
List<XmlSuite> mySuites = new ArrayList<XmlSuite>();
mySuites.add(mySuite);

//Set the list of Suites to the testNG object you created earlier.
myTestNG.setXmlSuites(mySuites);

TestListenerAdapter tla = new TestListenerAdapter();
myTestNG.addListener(tla);

//invoke run() - this will run your class.
myTestNG.run();
}

public static void main (String args[])
{
DynamicTestNG dt = new DynamicTestNG();

//This Map can hold your testng Parameters.
Map<String,String> testngParams = new HashMap<String,String> ();

testngParams.put("searchtext1", "testdata1");
testngParams.put("searchtext2", "testdata2");

dt.runTestNGTest(testngParams);
}

SampleClass.java

  public class SampleClass {

private WebDriver driver;

@BeforeTest
public void setUp()
{
System.setProperty("webdriver.chrome.driver","C:\\Users\\AK5040691\\Desktop\\IE driver\\chromedriver.exe");
driver = new ChromeDriver();

driver.manage().window().maximize();
driver.navigate().to("http://executeautomation.com/blog/custom-testng-library-for-appium/#more-1562");
}

//@Parameters({"searchText1","searchText2"})
//@Test
public void searchText(String text1, String text2)
{
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.findElement(By.className("search-field")).sendKeys(text1);

driver.findElement(By.className("search-field")).clear();

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.findElement(By.className("search-field")).sendKeys(text2);
}
}

它没有运行。请让我知道这里的错误。

最佳答案

您必须在您的SampleClass 文件中取消对@Test 注释的注释。如果你的 SampleClass 在一个 package 中,那么这个语句中要指定绝对包名+类名。

myClasses.add(new XmlClass("com.some.package.SampleClass"));

通常,TestNG 类有一个标记为“Test”的后缀或前缀,以便 surefire 插件可以将它们包含在执行流程中,以防您使用 ma​​ven

关于java - 动态创建TestNG.xml文件并传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47593067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com