栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用testng并行运行我的selenium测试方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用testng并行运行我的selenium测试方法

这是在TestNG中执行此操作的一些方法。您基本上可以通过

@BeforeMethod
@AfterMethod
配置方法来管理Webdriver实例化和清理。因此,您需要确定如何与您的
@Test
方法共享创建的webdriver实例。为此,您有三个选择:

  1. 您使用了一个
    ThreadLocal
    变体,因为TestNG向您保证它将执行
    @BeforeMethod
    @Test
    并且
    @AfterMethod
    都在同一线程中。

这是一个示例,向您展示了这一功能

    import org.openqa.selenium.chrome.ChromeDriver;    import org.openqa.selenium.remote.RemoteWebDriver;    import org.testng.ITestResult;    import org.testng.Reporter;    import org.testng.annotations.AfterMethod;    import org.testng.annotations.BeforeMethod;    import org.testng.annotations.DataProvider;    import org.testng.annotations.Test;    public class TestClassSampleUsingThreadLocal {        private static final ThreadLocal<RemoteWebDriver> drivers = new ThreadLocal<>();        @BeforeMethod        public void instantiateBrowser(ITestResult testResult) { RemoteWebDriver driver = new ChromeDriver(); drivers.set(driver);        }        @Test(dataProvider = "dp")        public void testMethod(String url) { Reporter.log("Launching the URL [" + url + "] on Thread [" + Thread.currentThread().getId() + "]", true); driver().get(url); Reporter.log("Page Title :" + driver().getTitle(), true);        }        @DataProvider(name = "dp", parallel = true)        public Object[][] getData() { return new Object[][]{         {"http://www.google.com"}, {"http://www.stackoverflow.com"}, {"http://facebook.com"} };        }        @AfterMethod        public void cleanupBrowser() { RemoteWebDriver driver = driver(); driver.quit();        }        private RemoteWebDriver driver() { RemoteWebDriver driver = drivers.get(); if (driver == null) {     throw new IllegalStateException("Driver should have not been null."); } return driver;        }    }
  1. 您可以通过
    ITestResult
    对象共享webdriver实例。这是一个示例,显示了实际效果。
    import org.openqa.selenium.chrome.ChromeDriver;    import org.openqa.selenium.remote.RemoteWebDriver;    import org.testng.ITestResult;    import org.testng.Reporter;    import org.testng.annotations.AfterMethod;    import org.testng.annotations.BeforeMethod;    import org.testng.annotations.DataProvider;    import org.testng.annotations.Test;    public class TestClassSample {        private static final String WEBDRIVER = "driver";        @BeforeMethod        public void instantiateBrowser(ITestResult testResult) { RemoteWebDriver driver = new ChromeDriver(); testResult.setAttribute(WEBDRIVER, driver);        }        @Test(dataProvider = "dp")        public void testMethod(String url) { Reporter.log("Launching the URL [" + url + "] on Thread [" + Thread.currentThread().getId() + "]", true); driver().get(url); Reporter.log("Page Title :" + driver().getTitle(), true);        }        @DataProvider(name = "dp", parallel = true)        public Object[][] getData() { return new Object[][]{         {"http://www.google.com"},         {"http://www.stackoverflow.com"},         {"http://facebook.com"} };        }        @AfterMethod        public void cleanupBrowser(ITestResult testResult) { RemoteWebDriver driver = driver(testResult); driver.quit();        }        private RemoteWebDriver driver() { return driver(Reporter.getCurrentTestResult());        }        private RemoteWebDriver driver(ITestResult testResult) { if (testResult == null) {     throw new IllegalStateException("testResult should have not been null."); } Object driverObject = testResult.getAttribute(WEBDRIVER); if (driverObject == null) {     throw new IllegalStateException("Driver should have not been null."); } if (!(driverObject instanceof RemoteWebDriver)) {     throw new IllegalStateException("Driver is not a valid webdriver object"); } return (RemoteWebDriver) driverObject;        }    }
  1. 您可以将Webdriver实例化和清理过程提取到TestNG侦听器(该实现实现了一个
    org.testng.IInvokedMethodListener
    将创建的Webdriver设置为
    ITestResult
    (如选项2所示)或的
    ThreadLocal
    (如选项1所示)的侦听器。您可以找到有关此选项的更多详细信息以及我博客中的代码片段。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386622.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号