美文网首页
TestNG-进阶

TestNG-进阶

作者: 小眼睛的露鹿酱 | 来源:发表于2019-10-25 16:25 被阅读0次

    TestNG 执行

    1. 在eclipse中创建一个Java project


    2. 创建Package


    1. 创建java 的class



    创建两个Class: DemoA 和DemoB

    1. 导入TestNG lib


    2. 创建lib folder和data folder, 导入需要的selenium jar包记忆chrome的driver
    1. demoA与DemoB的代码如下
    package com.test;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.Assert;
    import org.testng.Reporter;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.Test;
    
    public class DemoA {
        WebDriver chromeDriver = new ChromeDriver();
        @Test
        public void run() {
            // set driver
            String driverPath = "D:\\EclipseSpace\\testngproject2\\data\\chromedriver.exe";
            System.setProperty("webdriver.chrome.marionette", driverPath);
            
         
            // 
            String baseURL = "http://www.google.co.in";
            Reporter.log("start open browser");
            chromeDriver.manage().window().maximize();
            chromeDriver.get(baseURL);
            Reporter.log("input selenium");
            chromeDriver.findElement(By.name("q")).sendKeys("selenium");
            chromeDriver.findElement(By.xpath("//*[@id=\"tsf\"]/div[2]/div[1]/div[3]/center/input[1]")).click();
            Reporter.log("check page search out");
            String newtitleString = chromeDriver.getTitle();
            Assert.assertEquals("selenium - Google Search", newtitleString);
            
        }
        
        @AfterClass
        public void closedBrowser() {
            chromeDriver.close();
        }
    }
    
    
    
    
    
    
    package com.test;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.Reporter;
    import org.testng.annotations.Test;
    
    public class DemoB {
    
        @Test
        public void run() {
            // set driver
            String driverPath = "D:\\EclipseSpace\\testngproject2\\data\\chromedriver.exe";
            System.setProperty("webdriver.chrome.marionette", driverPath);
            WebDriver chromeDriver = new ChromeDriver();
         
            // 
            String baseURL = "http://www.google.co.in";
            Reporter.log("start open browser");
            chromeDriver.manage().window().maximize();
            chromeDriver.get(baseURL);
            Reporter.log("check title");
            String title = chromeDriver.getTitle();
            Reporter.log(title);
            
        }
            
    }
    
    
    1. 生成testng.xml文件




    2. Run As testng

    ===============================================
    Suite
    Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
    ===============================================
    
    

    TestNG生成报告

    1. test-output file中会有一个文件是emailable-report.html


    2. index.html


    自定义报告内容 以及截图

    自定义报告内容可以通过创建新的class(继承IReport 和 ITestListener)

    1. 继承ITestListener

    新建一个package com.thers; 创建一个新的class 继承ITestListener

    package com.others;
    
    import org.testng.ITestContext;
    import org.testng.ITestListener;
    import org.testng.ITestResult;
    
    public class ItestLdemo1 implements ITestListener  {
         @Override
            public void onTestStart(ITestResult result) {
                // TODO Auto-generated method stub
                System.out.println("* START * :"+result.getName());
            }
    
            @Override
            public void onTestSuccess(ITestResult result) {
                // TODO Auto-generated method stub
                System.out.println("*** passed :"+result.getName() );
            }
    
            @Override
            public void onTestFailure(ITestResult result) {
                // TODO Auto-generated method stub
                System.out.println("---- failed :" +result.getName());
            }
    
            @Override
            public void onTestSkipped(ITestResult result) {
    
                // TODO Auto-generated method stub
                System.out.println("    skiped :"+result.getName());
            }
    
            @Override
            public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
                // TODO Auto-generated method stub
                ITestListener.super.onTestFailedButWithinSuccessPercentage(result);
            }
    
            @Override
            public void onTestFailedWithTimeout(ITestResult result) {
                // TODO Auto-generated method stub
                ITestListener.super.onTestFailedWithTimeout(result);
            }
    
            @Override
            public void onStart(ITestContext context) {
                // TODO Auto-generated method stub
                ITestListener.super.onStart(context);
            }
    
            @Override
            public void onFinish(ITestContext context) {
                // TODO Auto-generated method stub
                ITestListener.super.onFinish(context);
            }
    }
    
    

    将Listener注释添加到相关的class中


    然后执行一下得到下面的 result


    1. 继承IReport
      创建一个class 继承IReport
    package com.others;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.swing.text.AbstractDocument.Content;
    
    import org.testng.IReporter;
    import org.testng.ISuite;
    import org.testng.ISuiteResult;
    import org.testng.ITestContext;
    import org.testng.Reporter;
    import org.testng.xml.XmlSuite;
    
    public class ireportDemo1 implements IReporter{
    
        @Override
        public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
            // TODO Auto-generated method stub
            IReporter.super.generateReport(xmlSuites, suites, outputDirectory);
            
            for(int i=0;i<suites.size();i++) {
                Map<String, ISuiteResult> results = suites.get(i).getResults();
                
                for (String key:results.keySet()) {
                    ISuiteResult value = results.get(key);
                    
                    ITestContext context = value.getTestContext();
                    String s = "Suit Name"+context.getName()
                            +"::::" +"Report output filr >"+context.getOutputDirectory()
                            +"\n::::"+"Suit name >"+context.getSuite().getName()
                            +"\n::::"+"start execution >"+context.getStartDate()
                            +"\n::::"+"endTime >"+ context.getEndDate()
                            +"\n::::"+" passed >"+ context.getPassedTests().size()
                            +"\n::::"+" fialed >"+ context.getFailedTests().size();
                    
                    System.out.println(s);
                }
                
            }
        }
          
    }
    
    

    输出结果为:


    1. PDF 和Email
      使用PDF的jar包
      4.1 创建一个Base的java 类 里面有screenshot的设置
    package com.others;
    
    import java.io.File;
    
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    import com.google.common.io.Files;
    
    public class base {
    
        
         static WebDriver driver;
    
            public static WebDriver getDriver(){
    
                if(driver==null){
    
    
                WebDriver driver ;
                String driverPath = "D:\\EclipseSpace\\testngproject2\\data\\chromedriver.exe";
                System.setProperty("webdriver.chrome.marionette", driverPath);
                driver = new ChromeDriver();
                }
                return driver;
            }
        
            public static void takeScreenshot (WebDriver dirver, String outputFile) throws Exception{
                TakesScreenshot srcshot = ((TakesScreenshot) dirver);
                File srcFile = srcshot.getScreenshotAs(OutputType.FILE);
                File descFile = new File(outputFile);
                Files.copy(srcFile, descFile);
            }
    }
    
    

    相关文章

      网友评论

          本文标题:TestNG-进阶

          本文链接:https://www.haomeiwen.com/subject/geervctx.html