1:Parameter用来给test方法提供String类型的参数
1.1 testng.xml文件的写法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Test1">
<parameter name="key1" value="Parameter1"></parameter>
<parameter name="key2" value="Parameter2"></parameter>
<parameter name="key3" value="123"></parameter>
<classes>
<class name="TestNGEXT.Parameterext"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
1.2:测试方法
package TestNGEXT;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Parameterext {
@Test
@Parameters({"key1"})
public void Parameter1(String key){
System.out.println("Parameter1 ="+key);
}
@Test
@Parameters({"key2","key3"})
public void Parameter2(String key2 , String key3){
System.out.println("Parameter2 ="+key2 +" "+key3);
}
}
1.3:注意事项
@Parameters传递的参数都是String类型的参数
2:parrallel冰心执行class和methods
Parameterext1
package TestNGEXT;
import org.testng.annotations.Test;
public class Parameterext1 {
@Test
public void Parameter_1(){
System.out.println("Parameter1 = Test1.1");
}
@Test
public void Parameter_2(){
System.out.println("Parameter1 = Test1.2");
}
}
Parameterext2
package TestNGEXT;
import org.testng.annotations.Test;
public class Parameterext2 {
@Test
public void Parameter_1(){
System.out.println("Parameter2 = Test2.1");
}
@Test
public void Parameter_2(){
System.out.println("Parameter2 = Test2.2");
}
}
2.1:并行执行class
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests" thread-count="2">
<test name="Test1">
<classes>
<class name="TestNGEXT.Parameterext1"/>
</classes>
</test>
<test name="Test2">
<classes>
<class name="TestNGEXT.Parameterext2"/>
</classes>
</test>
</suite> <!-- Suite -->
2.2:并行执行methods
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods" thread-count="2">
<test name="Test1">
<classes>
<class name="TestNGEXT.Parameterext1"/>
</classes>
</test>
<test name="Test2">
<classes>
<class name="TestNGEXT.Parameterext2"/>
</classes>
</test>
</suite> <!-- Suite -->
2.3:parallel参数的特征
如下 parallel参数有下列可选的参数值
- classes:并行执行classes
执行结果是:
Parameter1 = Test1.1
Parameter1 = Test1.2
Parameter2 = Test2.1
Parameter2 = Test2.2
methods:并行执行方法Parameter1中的两个@Test方法并发最新后再并发执行Parameter2中的Test方法
执行结果是 Parameter1 = Test1.1
Parameter1 = Test1.2
Parameter2 = Test2.1
Parameter2 = Test2.2
- tests:并行执行@Test的注释 Parameter1和Parameter2两个类同步并发执行
执行结果是:
Parameter1 = Test1.1
Parameter2 = Test2.1
Parameter1 = Test1.2
Parameter2 = Test2.2
3:Parameter和parrallel与selenium的结合
selenium webdriver自动化脚本 启动baidu
package TestNGEXT;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Parameterext {
private WebDriver driver;
@Test
@Parameters({"browers"})
public void Parameter_1(String browersNmae){
if(browersNmae.equalsIgnoreCase("chrome")){
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver\\chromedriver.exe");
driver = new ChromeDriver();
}else if(browersNmae.equalsIgnoreCase("firefox")){
driver = new FirefoxDriver();
}
driver.get("www.baidu.com");
}
}
2:testng.xml文件
这样配置的好处是同样的执行脚本 只用写一次java脚本 其他的动作交给TestNG测试框架来处理
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests" thread-count="2">
<!-- 根据browers参数并发启动chrome和firefox浏览器 -->
<test name="Test1">
<parameter name="browers" value="chrome"></parameter>
<classes>
<class name="TestNGEXT.Parameterext" />
</classes>
</test>
<test name="Test2">
<parameter name="browers" value="firefox"></parameter>
<classes>
<class name="TestNGEXT.Parameterext" />
</classes>
</test>
</suite> <!-- Suite -->