TestNG入门

selenium IDE录制脚本,可以导出TestNG java脚本,今天跑起来试一下,还挺好用的。
1、首先intellij idea创建项目导入这三个jar包

2、用selenium IDE录制脚本导出java脚本。
3、在intellij idea中创建一个class,把脚本复制进去

TestcaseLogin.java

 1 package com.tgb.test;
 2 import java.util.concurrent.TimeUnit;
 3 import org.testng.annotations.*;
 4 import static org.testng.Assert.*;
 5 import org.openqa.selenium.*;
 6 import org.openqa.selenium.firefox.FirefoxDriver;
 7 
 8 public class TestcaseLogin {
 9 private WebDriver driver;
10 private String baseUrl;
11 private boolean acceptNextAlert = true;
12 private StringBuffer verificationErrors = new StringBuffer();
13 
14 @BeforeClass(alwaysRun = true)
15 public void setUp() throws Exception {
16         driver = new FirefoxDriver();
17         baseUrl = "https://haiyan.51ping.com";
18         driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
19         }
20 
21 @Test
22 public void test11() throws Exception {
23         driver.get(baseUrl);
24         driver.findElement(By.id("username")).clear();
25         driver.findElement(By.id("username")).sendKeys("alisa.zhao");
26         driver.findElement(By.id("password")).clear();
27         driver.findElement(By.id("password")).sendKeys("Ceshi123");
28         driver.findElement(By.xpath("(//input[@name='_eventId_submit'])[2]")).click();
30         }
31 
32 @AfterClass(alwaysRun = true)
33 public void tearDown() throws Exception {
34         driver.quit();
35         String verificationErrorString = verificationErrors.toString();//是否有错误信息
36         if (!"".equals(verificationErrorString)) {
37         fail(verificationErrorString);//将错误信息输出
38         }
39         }
40 //下边这三个方法都是selenium ide自动生成的,目前还没发现有什么作用
41 private boolean isElementPresent(By by) {
42         try {
43         driver.findElement(by);
44         return true;
45         } catch (NoSuchElementException e) {
46         return false;
47         }
48         }
49 
50 private boolean isAlertPresent() {
51         try {
52         driver.switchTo().alert();
53         return true;
54         } catch (NoAlertPresentException e) {
55         return false;
56         }
57         }
58 
59 private String closeAlertAndGetItsText() {
60         try {
61         Alert alert = driver.switchTo().alert();
62         String alertText = alert.getText();
63         if (acceptNextAlert) {
64         alert.accept();
65         } else {
66         alert.dismiss();
67         }
68         return alertText;
69         } finally {
70         acceptNextAlert = true;
71         }
72         }
73         }

4、运行TestNG

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="suite1">
    <test name="test" verbose="10">//verbose是详细程度,10是最详细
        <classes>
            <class name="com.tgb.test.TestcaseLogin" />
        </classes>
    </test>
</suite>

直接运行xml就可以了

5、TestNG的基础

注解描述
@BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后。
@BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。
@AfterTest 注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。
@BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod 注解的方法将每个测试方法之前运行。
@AfterMethod 被注释的方法将被运行后,每个测试方法。
@DataProvider
标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。
posted @ 2016-01-21 16:12  dudu_234  阅读(412)  评论(0编辑  收藏  举报