gpt4 book ai didi

java - 在特定流程中使用 DataProvider 运行测试

转载 作者:行者123 更新时间:2023-11-30 12:05:47 25 4
gpt4 key购买 nike

我有一个 DataProvider 可以读取如下所示的 CSV 文件

john|26|mba
claire|33|bbl
knight|29|mpa

现在我有三个,每个类有一个@Test

类名是

NameReader.java
ProcessStudent.java
ValidateDatabase.java

我的 NameReader.java 有一个 @Test 方法,它从上述数据提供者那里获取输入。所以在这种情况下,如果我只执行 NameReader.java,它将运行 3 次,因为有三行

但问题是我希望 NameReader.Java 接受来自数据提供者的第一行,然后运行 ​​ProcessStudent.java 然后运行 ​​ValidateDatabase.java。对于 DataProvider 中剩余的两行,也应该发生此流程。

但是如果我如下指定我的testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="1" name="Test" preserve-order="true">
<classes>
<class name="com.java.testng.NameReader"/>
<class name="com.java.testng.ProcessStudent"/>
<class name="com.java.testng.ValidateDatabase"/>
</classes>
</test>
</suite>

它首先运行NameReader.java 中的@Test 3 次,然后继续运行ProcessStudent 中的@Test。 java 然后到 ValidateDatabase.java 中的 @Test

请记住,我不需要在 ProcessStudent.javaValidateDatabase.java 中使用上述 DataProvider

我怎样才能达到我的需要?

最佳答案

从 NameReader 测试方法调用 ProcessStudent 和 ValidateDatabase 测试方法。必须将 ProcessStudent 和 ValidateDatabase 测试方法声明为静态方法。

public class NameReader {

@Test(dataProvider = "getData")
public void testNameReader(String str1, String str2) {

System.out.println("data set = "+str1+" "+str2);
System.out.println("NameReader ends");

ProcessStudent.testClassB();
ValidateDatabase.testClassC();
}

@DataProvider
public Object[][] getData(){
//data set here
}

关于java - 在特定流程中使用 DataProvider 运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56033001/

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