testng beforegroupsmethod能用参数化吗

TestNG @Factory与 @DataProvider 结合使用进行参数化测试
TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试到集成测试,这个是TestNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试。设计目标的不同,对比junit的只适合用于单元测试,TestNG无疑走的更远。可以用于集成测试,这个特性是我选择TestNG的最重要的原因。
先了解这两个注解的意思
@DataProvider&&& 标记一个方法用于为测试方法提供数据。被注释的方法必须返回Object[][], 其中每个Object[]可以指派为这个测试方法的参数列表。
& & & & & & & & & & & & &aProvider名称等于这个注解的名字。
&@Factory&&& 标记方法作为一个返回对象的工厂,这些对象将被TestNG用于作为测试类。这个方法必须返回Object[]。
├── src/main/java/test/demo/TestFactory.java
├── src/main/java/test/demo/LoginPageTest.java
│── src/main/java/test/demo/HomePageTest.java
└── src/test/resources/smokeTest.xml
1 package test.
3 import org.testng.annotations.DataP
4 import org.testng.annotations.F
* @Description: Demo
* @author wadexu
* @updateUser
* @updateDate
13 public class TestFactory {
@DataProvider(name = "datasource")
public Object[][] datasource() {
// Creating and filling result array
Object[][] credentials = new Object[2][2];
credentials[0][0] = "User1";
credentials[0][1] = "WadeXu";
credentials[1][0] = "User2";
credentials[1][1] = "JamesBond";
@Factory(dataProvider = "datasource")
public Object[] createTest(String userID, String userName) {
Object[] tests = new Object[2];
tests[0] = new HomePageTest(userID, userName);
tests[1] = new LoginPageTest(userID, userName);
HomePageTest&LoginPageTest
##转载注明出处:/wade-xu/p/4761275.html&
1 package test.
3 import org.testng.annotations.T
* @Description: Demo Login Page
* @author wadexu
* @updateUser
* @updateDate
12 public class LoginPageTest {
private String userID;
private String userN
public LoginPageTest(String userID, String userName) {
this.userID = userID;
this.userName = userN
public void testLogin() {
// for demo purpose only
System.out.println(userID + " - " + userName + " is testing Login page");
1 package test.
3 import org.testng.annotations.T
* @Description: Demo Home Page
* @author wadexu
* @updateUser
* @updateDate
12 public class HomePageTest {
private String userID;
private String userN
public HomePageTest(String userID, String userName) {
this.userID = userID;
this.userName = userN
public void testHomePage() {
System.out.println(userID + " - " + userName + " is testing Home page");
##转载注明出处:/wade-xu/p/4761275.html&
TestNG xml配置文件如下
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" &
&!--&suite name="DMP_Test_Suite" --&
&suite name="Demo_Test_Suite" parallel="false"&
&test name="Demo_Test"&
&class name="test.demo.TestFactory" /&
&/classes&
右击xml文件Run as TestNG
Test Result:
Console output:
User1 - WadeXu is testing Home page
User2 - JamesBond is testing Home page
User1 - WadeXu is testing Login page
User2 - JamesBond is testing Login page
注意测试方法将被一共执行的次数,@DataProvider属于循环测试的类型。
TestNG更多功能请参考
感谢阅读,如果您觉得本文的内容对您的学习有所帮助,您可以点击右下方的推荐按钮,您的鼓励是我创作的动力。
##转载注明出处:/wade-xu/p/4761275.html&
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
测试,那么如果参数值没有特定的规律时,@DataProvider相结合的方式进行测试 注意要点:请注意测试方法将被一共执行的次数,,@DataProvider也是属于测试整体循环的类型 Java code: / * * &p& ...
原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong 的方法来创建测试数据并配合完成测试 其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可以通过代码控制), 此时,我们就可以把自 ...
软件测试往往需要测试大量的数据集,这样才能保证软件的稳定性和鲁棒性.JUnit没有提供方便传递测试参数的机制,所以,针对每个测试数据集,都需要单独写代码进行测试.这样浪费很多时间和精力重复写测试代码,它们只是参数不一样,测试逻辑完全一样.同时,测试代码和测试数据没有分离,为今后的维护埋下隐患. TestNG在参数化测试方面,比JUnit有较大的优势.提供了两 ...
软件测试往往需要测试大量的数据集,这样才能保证软件的稳定性和鲁棒性.JUnit没有提供方便传递测试参数的机制,所以,针对每个测试数据集,都需要单独写代码进行测试.这样浪费很多时间和精力重复写测试代码,它们只是参数不一样,测试逻辑完全一样.同时,测试代码和测试数据没有分离,为今后的维护埋下隐患. TestNG在参数化测试方面,比JUnit有较大的优势.提供了两 ...
在使用TestNG进行测试时,经常会使用到一些参数化配置,比如数据库.连接池.线程池数,
原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong 使用多线程的方式运行测试代码配置: 在'&suite&'标签中配置data-provide ...
5.13 - 程序化运行TestNG 你可以在程序中非常轻松的调用TestNG的测试: TestListenerAdapter tla = new TestListenerAdapter(); TestNG testng = new TestNG(); testng.setTestClasses(new Class[] { Run2.class });
之前的项目中做单元测试一直用的是NUnit,这次做新项目,负责人要求统一用MsTest,理由是MsTest是Visual Studio内置的.用就用吧,我没什么意见.不过用了两天,我就发现一个大问题:MsTest并不支持参数化测试(也有叫行测试的).
什么是参数化测试?简单的说,就是同样的逻辑,根据输入参数不同给出不同的结果.因为只是参数不同,所以并不希 ...
一次运行多个测试类3-1个测试类参数化测试 package springMybatis. import java.util.A import java.util.C import org.junit.BeforeC import org.junit.T import org.junit.runner ...WebDriver & TestNG·参数化及用例排序 - wyyazjll的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
WebDriver & TestNG·参数化及用例排序
& 08:56:23
一、一个简单的搜索public class GoogleTest&{&&&@Test&&&public voidsearch(ITestContext context) {&&&&&&&WebDriver driver = new FirefoxDriver();&&&&&&&driver.get("");&&&&&&&WebElement element = driver.findElement(By.name("q"));&&&&&&&element.sendKeys("乙烯");&&&&&&&element.submit();&&&&&&&Assert.assertTrue(driver.getTitle().contains("乙烯"), "Title is&wrong!");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}}-------------------------------------------------------------------&suite name=" demo" verbose="2"&&&&&test name="Search function"&&&&&&&&&classes&&&&&&&&&&&&&class name=".GoogleTest"&&&&&&&&&&&&&&&&&methods&&&&&&&&&&&&&&&&&&&&&include name="search" /&&&&&&&&&&&&&&&&&/methods&&&&&&&&&&&&&/class&&&&&&&&&/classes&&&&&/test&&/suite&注:1.verbose:执行的输出详细程度。因为testng会输出html格式的测试报告。因此该属性决定报告详细程度。程度值由0-10.0是没有,10是最详细。不是必需有的。二、使测试更加灵活:1. 可以配置使用任意支持的浏览器进行测试;2. 配置所有Google的URL;3. 配置搜索的关键字。修改后的代码如下:public class GoogleTest&{&&&WebD&&&&@Parameters({"browser"})&&&@BeforeTest&&&public voidsetupBrowser(Stringbrowser){&&&&&&&if (browser.equals("firefox")){&&&&&&&&&&&driver = new FirefoxDriver();&&&&&&&} else {&&&&&&&&&&&driver = new ChromeDriver();&&&&&&&}&&&&&}&&&&&&@Parameters({ "url", "keyword" })&&&@Test&&&public voidsearch(Stringurl, Stringkeyword) {&&&&&&&&&&&&&&driver.get(url);&&&&&&&WebElement element = driver.findElement(By.name("q"));&&&&&&&element.sendKeys(keyword);&&&&&&&element.submit();&&&&&&&Assert.assertTrue(driver.getTitle().contains(keyword), "Title is&wrong!");&&&&&&&&&&&&&}&&}---------------------------------------------------------------&suite name="google demo" verbose="2"&&&&&parameter name="browser" value="firefox" /&&&&&parameter name="url" value="" /&&&&&parameter name="keyword" value="乙烯" /&&&&&test name="Search function"preserve-order="true"&&&&&&&&&classes&&&&&&&&&&&&&class name="test.GoogleTest"&&&&&&&&&&&&&&&&&methods&&&&&&&&&&&&&&&&&&&&&include name="setupBrowser" /&&&&&&&&&&&&&&&&&&&&&include name="search" /&&&&&&&&&&&&&&&&&/methods&&&&&&&&&&&&&/class&&&&&&&&&/classes&&&&&/test&&/suite&注:1.利用TestNG的@Parameters标签,让测试方法从testng.xml里面读取参数,实现参数化。参数化详解见:2.在testng.xml的配置中,test节点需要增加一个属性的配置: preserve-order=”true”。这个preserve-order默认是false,在节点下面的所有方法的执行顺序是无序的。把它设为true以后就能保证在节点下的方法是按照顺序执行的。在上面代码中setupBrowser方法必须在search方法前执行!希望实现的场景:Jenkins中的Job可针对不同浏览器,不同环境,运行不同的测试用例集,但测试用例只保持一份。
具体实现的思路:在运行Jenkins Job时传入参数,运行 mvn test 命令时把相应的参数带上,最终影响被执行的测试用例。
下面看看是如何一步步实现的:
1、在TestNG的XML中设置参数。
下面的截图中,我设了两个参数,一个是testEnv,另一个是browser。参数的值可以直接写死,也可以由外部传入。参数有不同的作用域,如直接写在&suite&下,那他的作用域就是整个suite。如写在&test&下,那他的作用域就是所在的test。
2、在测试代码中使用参数。
如下所示,我是在beforeClass 方法中,根据传入的两个参数来初使化浏览器和load 相应环境的测试数据。
3、修改pom.xml文件
4、Jenkins job 传入参数并执行mvn命令
&在job中,我设置了两个参数,并给出了默认值。执行job时,可直接使用该默认值或根据实际情况把参数的值改成自己想要的。
下面是Maven命令:
mvn clean test -DtestEnv=%testEnv% -DxmlFileName=%xmlFileName%
执行这条命令时,我们把testEvn及xmlFileName两个参数的值传入了pom.xml文件,接着,Maven在调用TestNG时又会把参数传过去。经过如上四个步骤,我们可以通过参数传递,灵活的指定测试环境、测试范围等,而不需要对测试脚本做任何改动。
这边要讲下xmlFileName这个参数。因为考虑到要执行不同的用例集,比如只针对某一模块进行自动化测试,或对项目所有的功能进行全面回归,我们可以创建不同的TestNG XML文件,然后在执行mvn命令时指定你想要跑的那个XML文件。
该方法适用于所有使用Jenkins + Maven + TestNG的测试场景。
转自:http://qa./blog/static//
阅读(...) 评论()TestNG参数化测试
现在位置: >
TestNG参数化测试
TestNG参数化测试来源:原创文章&&& 由 易百 更新版本&&& 浏览:人次
在的另一个有趣的功能是参数测试。在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大的不同数量的测试。参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值。
TestNG让你直接传递参数测试方法两种不同的方式:
使用testng.xml
数据提供程序
传递参数使用testng.xml
有了这种技术,在testng.xml文件中定义的简单参数,然后在源文件中引用这些参数。让我们看看下面的例子中如何使用这种技术来传递参数。
创建测试案例类
创建一个Java测试类 ParameterizedTest1.java.
测试方法parameterTest()添加到测试类。此方法需要一个字符串作为输入参数。
添加注释&@Parameters(&myName&)&到此方法。该参数将被传递testng.xml,在下一步我们将看到一个值。
创建Java类文件名 ParameterizedTest1.java 在&C:\ & TestNG_WORKSPACE
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizedTest1 {
@Parameters(&myName&)
public void parameterTest(String myName) {
System.out.println(&Parameterized value is : & + myName);
创建 TESTNG.XML
创建 testng.xml&C:\ & TestNG_WORKSPACE&执行测试案例
&?xml version=&1.0& encoding=&UTF-8&?&&!DOCTYPE suite SYSTEM &http://testng.org/testng-1.0.dtd& &
name=&Suite1&
name=&test1&
name=&myName& value=&manisha&
name=&ParameterizedTest1&
我们还可以定义参数在&suite&级别。假设我们已经定义在两个&suite&和&test&级别myName,在这种情况下,常规的作用域规则适用。这意味着,任何类里面&test&标签将查看值参数定义在&test&,而testng.xml文件中的类的其余部分将看到定义在&suite&中值
编译使用javac的测试用例类。
C:\TestNG_WORKSPACE&javac ParameterizedTest1.java
现在,运行testng.xml,其中将运行parameterTest方法。TestNG的将试图找到一个命名myName的第一&test&标签的参数,然后,如果它不能找到它,它会搜索包围在的&suit&标签。
C:\TestNG_WORKSPACE&java -cp &C:\TestNG_WORKSPACE& org.testng.TestNG testng.xml
验证输出。
Parameterized value is : manisha
===============================================
Total tests run: 1, Failures: 0, Skips: 0
===============================================
TestNG 对testng.xml 的参数的类型指定的值会自动尝试转换。下面是支持的类型:
int/Integer
boolean/Boolean
char/Character
double/Double
float/Float
short/Short
传递参数与数据提供者
当你需要通过复杂的参数或参数需要创建从Java(复杂的对象,对象读取属性文件或数据库等..),在这种情况下,可以将参数传递使用数据提供者。数据提供者@DataProvider的批注的方法。这个注解只有一个字符串属性:它的名字。如果不提供名称,数据提供者的名称会自动默认方法的名称。数据提供者返回一个对象数组。
让我们看看下面的例子使用数据提供者。第一个例子是@DataProvider的使用Vector,String或Integer&作为参数,第二个例子是关于@DataProvider 的使用对象作为参数。
在这里 @DataProvider 通过整数和布尔参数。
创建Java类
创建一个java类PrimeNumberChecker.java。这个类检查,如果是素数。创建这个类在&C:\ & TestNG_WORKSPACE
public class PrimeNumberChecker {
public Boolean validate(final Integer primeNumber) {
for (int i = 2; i & (primeNumber / 2); i++) {
if (primeNumber % i == 0) {
return false;
return true;
创建测试案例类
创建一个Java测试类&ParamTestWithDataProvider1.java.
定义方法primeNumbers(),其定义为DataProvider 使用注释。此方法返回的对象数组的数组。
测试方法testPrimeNumberChecker()添加到测试类中。此方法需要一个整数和布尔值作为输入参数。这个方法验证,如果传递的参数是一个素数。
添加注释&@Test(dataProvider = &test1&)&到此方法。dataProvider的属性被映射到&test1&.
创建Java类文件名ParamTestWithDataProvider1.java 在&C:\ & TestNG_WORKSPACE
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider1 {
private PrimeNumberChecker primeNumberChecker;
@BeforeMethod
public void initialize() {
primeNumberChecker = new PrimeNumberChecker();
@DataProvider(name = &test1&)
public static Object[][] primeNumbers() {
return new Object[][] { { 2, true }, { 6, false }, { 19, true },
{ 22, false }, { 23, true } };
// This test will run 4 times since we have 5 parameters defined
@Test(dataProvider = &test1&)
public void testPrimeNumberChecker(Integer inputNumber,
Boolean expectedResult) {
System.out.println(inputNumber + & & + expectedResult);
Assert.assertEquals(expectedResult,
primeNumberChecker.validate(inputNumber));
创建 TESTNG.XML
创建 testng.xml&C:\ & TestNG_WORKSPACE&执行测试案例。
&?xml version=&1.0& encoding=&UTF-8&?&&!DOCTYPE suite SYSTEM &http://testng.org/testng-1.0.dtd& &
name=&Suite1&
name=&test1&
name=&ParamTestWithDataProvider1&
编译使用javac的测试用例类。
C:\TestNG_WORKSPACE&.javac ParamTestWithDataProvider1.java PrimeNumberChecker.java
运行testng.xml.
C:\TestNG_WORKSPACE&java -cp &C:\TestNG_WORKSPACE& org.testng.TestNG testng.xml
验证输出。
===============================================
Total tests run: 5, Failures: 0, Skips: 0
===============================================
在这里,@DataProvider 传递对象作为参数。
创建Java类
创建一个Java类 Bean.java, 对象带有 get/set 方法, 在&C:\ & TestNG_WORKSPACE.
public class Bean {
private String val;
private int i;
public Bean(String val, int i){
this.val=val;
public String getVal() {
return val;
public void setVal(String val) {
this.val = val;
public int getI() {
public void setI(int i) {
this.i = i;
创建测试案例类
创建一个Java测试类 ParamTestWithDataProvider2.java.
定义方法primeNumbers(),其定义为DataProvider使用注释。此方法返回的对象数组的数组。
添加测试类中测试方法TestMethod()。此方法需要对象的bean作为参数。
添加注释&@Test(dataProvider = &test1&) 到此方法. &dataProvider 属性被映射到 &test1&.
创建Java类文件名 ParamTestWithDataProvider2.java 在&C:\ & TestNG_WORKSPACE
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider2 {
@DataProvider(name = &test1&)
public static Object[][] primeNumbers() {
return new Object[][] { { new Bean(&hi I am the bean&, 111) } };
@Test(dataProvider = &test1&)
public void testMethod(Bean myBean) {
System.out.println(myBean.getVal() + & & + myBean.getI());
创建 TESTNG.XML
创建一个文件 testng.xml&C:\ & TestNG_WORKSPACE&来执行测试用例.
&?xml version=&1.0& encoding=&UTF-8&?&&!DOCTYPE suite SYSTEM &http://testng.org/testng-1.0.dtd& &
name=&Suite1&
name=&test1&
name=&ParamTestWithDataProvider2&
编译使用javac的测试用例类。
C:\TestNG_WORKSPACE&javac ParamTestWithDataProvider2.java Bean.java
运行 testng.xml.
C:\TestNG_WORKSPACE&java -cp &C:\TestNG_WORKSPACE& org.testng.TestNG testng.xml
验证输出。
hi I am the bean 111
===============================================
Total tests run: 1, Failures: 0, Skips: 0
===============================================
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,传播学习教程;
转载请注明:文章转载自:易百教程 []
本文标题:TestNG参数化测试
转载请保留原文链接:
上一篇: &&&&
易百教程提供的内容仅用于培训。我们不保证内容的正确性。通过使用本站内容而可能带来的风险与本站无关。易百教程的所有内容仅供测试,对任何法律问题及风险不承担任何责任。
当使用本站时,代表您已接受了本站的使用条款和隐私条款。版权所有,保留一切权利!TestNG的参数化测试 - 推酷
TestNG的参数化测试
软件测试往往需要测试大量的数据集,这样才能保证软件的稳定性和鲁棒性。JUnit没有提供方便传递测试参数的机制,所以,针对每个测试数据集,都需要单独写代码进行测试。这样浪费很多时间和精力重复写测试代码,它们只是参数不一样,测试逻辑完全一样。同时,测试代码和测试数据没有分离,为今后的维护埋下隐患。
TestNG在参数化测试方面,比JUnit有较大的优势。提供了两种传递参数的方式。testng.xml方式使代码和测试数据分离,方便扩展和维护。@DataProvider能够提供比较复杂的参数,同时方便产生具有一定规律的测试数据集。
1. testng.xml
可以通过&parameter&标签,在testng.xml中定义参数的值。对于同一参数,可以在不同地方定义不同值,因此需要注意testng.xml中的测试范围的问题。
&suite&和&test&标签定义了suite和test两种测试范围:一个test可以包含一系列的测试方法,一个suite可以包含多个独立的test。这两种测试范围有什么区别呢?一个test的所有测试方法都是针对同一测试对象,测试方法之间可以相互影响。而一个suite的每个test都是针对一个单独测试对象,两个test中的测试方法不会相互影响。
在这两种测试范围定义的参数,满足如下规律:
1)在Suite范围内定义某个参数的值,对所有的Test都有效。
2)在Test范围内定义某个参数的值,只是针对该Test有效。
3)如果同时在Suite和Test中定义某个参数,Test范围的值会屏蔽Suite的值。
示例代码如下:
&!DOCTYPE suite SYSTEM &http://testng.org/testng-1.0.dtd& &
&suite name=&Suite& verbose=&1&&
&parameter name=&username& value=&root& /&
&parameter name=&password& value=&pwd& /&
&parameter name=&param& value=&param& /&
&test name=&test1&&
&parameter name=&username& value=&root2& /&
&parameter name=&password& value=&pwd2& /&
&class name=&HelloWorld& /&
&/classes&
&test name=&test2&&
&packages&
&package name=&com.ibm.testng.test&&&/package&
&/packages&
在suite中都定义了username和password两个参数,同时也在test1中也定义了这两个参数,但是在test2中没有定义。因此,test1中所有测试方法的username和password分别为“root2”和“pwd2”,而test2中所有测试方法的username和password分别为“root”和“pwd”。
在java代码中,给测试方法传递参数的示例代码如下:
@Parameters({&username&})
@Test(groups = &login&)
public void inputUsername(String username) {
System.out.println(&Input Username: & + username);
@Parameters({&password&})
@Test(groups = &login&)
public void inputPassword(String password) {
System.out.println(&Input Password: & + password);
如果带参的函数被@Test标记为测试函数,但是没有被@Parameters标记,或者被@Parameters标记了,但是没有指定传递参数的名字,都会抛出一个TestNGException,这个函数就会被认为fail掉。
testng.xml只能传输简单类型的参数,不能传递Object类型。可以通过间接的方式,传递Object类型的参数。将所有参数化放到一个xml文件中,然后将该xml文件名作为参数,传递到一个XML解析器中。将xml解析的参数作为属性,创建所需的Object对象,然后对这些对象执行测试方法。
2. @DataProvider
一个使用&@DataProvider传递参数的例子,代码如下:
@DataProvider(name = &user&)
public Object [][] createUser(Method m) {
System.out.println(m.getName());
return new Object[][] {
{&root&, &root&},
{&test&, &root&},
@Test(groups = &login&, dependsOnGroups = &launch&, dataProvider = &user&)
public void verifyUser(String username, String password) {
System.out.println(&Verify User : & + username + &:& + password);
assert username.equals(password);
示例代码说明:
1)@DataProvider标记的createUser()提供名称为user的参数,同时输出接受参数的测试函数的名字。
2)@Test标记的测试函数verifyUser()接受名称为user的参数,同时判断参数username和password是否相等。
@DataProvider标记专门为测试方法提供参数的方法。这类方法必须返回Object[ ][ ]类型的二维数组,Object[]的每一行,都是测试方法的一个测试数据集,测试方法会为每个测试数据集执行一次。如果没有指定参数的名称,则默认为方法的名称,方法的名称没有限制。
@DataProvider标记的方法一般情况下没有参数,其实也可以带参数,但是这些参数的传递受到下面的两个限制:
1)@DataProvider标记的方法不可能是测试函数,因此不能通过@Parameters传递参数。
2)@DataProvider标记的方法只能被TestNG调用,因此用户不能通过调用的方式传递参数。
基于上面两个限制,@DataProvider标记的方法的参数化必须是特殊类型的,即TestNG在调用该方法时,可以通过反射机制获得。例如,例子中传递的参数是java.lang.reflect.Method类型,TestNG会将当前测试函数的名称传递给这个参数。当多个测试函数同时使用相同@DataProvider提供的参数时,需要根据测试方法提供不同的测试数据集时,这种特殊类型参数就显得非常有用。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 testng beforesuite 的文章

 

随机推荐