TestNG测试框架的使用-Parameter和parrallel

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 -->

猜你喜欢

转载自blog.csdn.net/hujyhfwfh2/article/details/84640110
今日推荐