引自:http://blog.sina.com.cn/s/blog_44e5fca90100hsud.html
1. testNG并发执行测试用例的方法
在配置testNG的test.xml中,通过suit标签的属性可以指定并发执行,例如:
<suite name="My suite" parallel="methods" thread-count="5">
指定每一个测试方法使用单独的线程,总线程数为5
parallel可以为:
methods : 每个method使用一个线程
tests :每个<test>标签中的所有方法使用一个线程
classes : 每个class使用一个线程
2 使用selenium grid
grid的机制是,启动一个hub,然后启动多个remote control,启动remote control时告知hub的位置,这样这些rc就可以注册到hub上,测试程序与hub通讯,当测试被并发地发给hub时,hub会自动将这些测试命令分发给已经注册的rc,rc接到命令后执行测试。
到这里D:\opensource\selenium\selenium-grid-1.0.4\doc\website\download.html下个最新版的selenium grid,里面的文档有详细的使用方法,现在简诉如下:
selenium grid要求安装jdk和ant,其目录下有一build.xml文件,其中定义的主要target如下:
检查配置:ant sanity-check
启动hub:ant launch-hub
其中hub的配置是在grid_configuration.yml文件里,该文件要在classpath的根里
启动后在http://host:port/console可以看到hub当前的状态
启动rc(按默认配置):ant run-demo-in-sequence
启动rc(指定参数):ant -Dport=5555 -Dhost=192.168.1.16 -DhubURL=http://192.168.1.1:4444 launch-remote-control
其中host和port是rc的地址,hubURL是hub的地址
正常启动后,可以在http://host:port/console看到hub中当前注册的rc
Grid 只是提供运行脚本的环境,无法决定脚本以什么样的形式去跑(并行的方式,或者多环境的方式)。脚本以什么样的形式跑,由脚本本身和脚本的runner (一般用junit或者TestNG)的配置所决定.
并行和多环境的是怎么实现的。
第 一,并行。并行很简单。。脚本就是普通的脚本。然后如果你的runner支持并行运行的话。你就配置成并行。那运行起来就是并行的。。目前junit本身 不支持并行,一般都是用TestNG. 只要让TestNG 并行的运行测试,无论你的测试环境是由一个grid拖几个rc组成,还是 单一一个rc组成。。实际上 运行起来 测试就是并行的,唯一的区别是。如果用了grid的话,grid会把并发数量平均分配到不同的rc上去,然后每个rc会启动一个浏览器运行测试。而没有用 grid情况就是同一个rc直接跑多个,就是一个rc直接打开多个浏览器窗口运行多个测试。
第 二,多环境。 说多环境,这里也要澄清一下。 不是说给一个普通的测试脚本,丢给grid就可以自动实现多环境同时测试了。那是完全错误的。。这里需要几点。1. 一个普通脚本能测试一个某一种环境。所以如果你要测试多个环境就需要多个脚本。而这些脚本的区别仅在于setup的时候定义 DefaultSelenium("localhost",4444,"*firefox",Url); 这里。 因此两个测试方法也可以到同一个文件里面。写两个不同的方法,不同的定义DefaultSelenium部分,但调用同样的测试步骤。(就是 selenium.open...开始到selenium.stop...). 这样一个文件下就算包含测试两个不同环境的测试方法了。
2. 让这两个测试方法,并行运行。。那又是testng的事情了。配置testng的suite。不细说。可以查看testng的文档。
3. grid配置的测试的rc环境,里面需要有刚才两个测试方法所需要的环境。
import static com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.closeSeleniumSession;
import static com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.session;
import static com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.startSeleniumSession;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import com.thoughtworks.selenium.Selenium;
public class Sample {
private Selenium selenium;
@BeforeMethod
@Parameters({"seleniumHost", "seleniumPort", "browser", "webSite"})
protected void startSession(String seleniumHost, int seleniumPort, String browser, String webSite) throws Exception {
startSeleniumSession(seleniumHost, seleniumPort, browser, webSite);
selenium = session();
selenium.setTimeout("120000");
}
@AfterMethod
protected void closeSession() throws Exception {
closeSeleniumSession();
}
@Test
public void test1() {
selenium.open("/");
selenium.type("q", "test1");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
}
【略】
}
分享到:
相关推荐
Selenium测试吸引人示例项目使用: Selenium WebDriver TestNg 魅力2 Maven执行命令要运行测试并生成魅力报告: mvn clean site -P [singleThreaded,nogrid,grid,parallelSuite]singleThreaded-按顺序执行测试,省略...
6. **测试框架集成**:将Selenium与JUnit、TestNG等测试框架结合,构建可重复执行的自动化测试套件。 7. **浏览器驱动管理**:为不同浏览器安装相应的驱动程序,并确保它们与Selenium版本和浏览器版本兼容。 8. **...
- **测试报告**: 结合其他测试报告工具(如Jenkins、TestNG等)收集并分析测试结果。 总之,"selenium-server-standalone-3.9.1.rar" 文件提供了Selenium Grid的核心服务,帮助开发者实现高效、可靠的Web应用自动化...
Selenium可以与各种持续集成工具(如Jenkins)和测试框架(如JUnit、TestNG)结合,实现自动化测试的持续集成,确保代码质量。 总结来说,Selenium Java 3.5.0提供了一套强大且灵活的工具,使得开发者能够编写高效...
- **Selenium Grid**:用于分布式测试,可以同时在多台机器上运行测试。 本案例中,我们将重点介绍如何使用Selenium WebDriver来编写自动化测试脚本。 ##### 2. TestNG概述 TestNG是一个用于Java语言的测试框架,...
8. **测试框架集成**:Selenium常与其他测试框架如JUnit、TestNG结合使用,提供更完善的测试报告和断言功能。 在实际应用中,要正确使用Selenium 3,你首先需要安装JDK,然后配置好对应的浏览器驱动,接着可以选择...
以上只是Selenium的部分核心概念和使用技巧,实际应用中还需要了解更多的高级特性,如处理Ajax异步请求、模拟文件上传、使用Selenium与TestNG或JUnit集成进行更复杂的测试管理等。通过深入学习和实践,你将能够熟练...
这本书可能还会教你如何利用Selenium WebDriver与各种浏览器(如Chrome、Firefox)进行交互,并介绍一些常用的Selenium库和工具,如PageFactory和TestNG。 《selenium2python自动化测试实战修订版》是专为Python...
5. **TestNG集成**:Selenium与TestNG框架的结合,提供了更高级的测试功能,如测试套件、依赖管理、数据驱动测试、并行执行等。TestNG还支持注解,使得测试用例的编写更加简洁明了。 6. **等待策略**:在自动化测试...
设计模式:具有可加载组件(POC)和AAA的页面对象模型在此框架中使用了以下工具: Java,Selenium,TestNG,Cucumber,确保REST,Gradle,Travis CI,魅力报告,Slack API,SeleniumGrid,WebDriverManager,Faker...
Selenium 主要由四个组件构成:Selenium IDE、Selenium RC、WebDriver 和 Selenium Grid。 **Selenium IDE** Selenium IDE 是一个集成开发环境,可以录制和回放用户在浏览器上的操作,方便快速创建测试脚本。它...
本文介绍了基于Selenium的Web自动化测试框架的相关知识,包括Selenium的基本概念、组件及其原理,并探讨了如何结合TestNG技术构建高效的测试框架。通过这种组合,不仅能有效提高测试效率和质量,还能简化测试脚本的...
Explore the Selenium grid architecture and build your own grid for browser and mobile devices Use ExtentReports for processing results and SauceLabs for cloud-based test services Unlock the full ...
【标题】"jinti-test.rar" 是一个包含Selenium Grid和TestNG入门示例的压缩文件,旨在帮助初学者了解如何将这两个强大的自动化测试工具结合使用。 【描述】"selenium grid + TestNG 入门demo" 提供了一个基础教程,...
3. Selenium Grid:虽然未直接提及,但Selenium Server也支持Selenium Grid,它允许在多台机器上并行执行测试,从而显著提高测试速度。在大规模测试环境中,Selenium Grid是不可或缺的工具。 在Java8环境下,使用...
4. TestNG/JUnit:Selenium通常与TestNG或JUnit这样的测试框架结合使用,来组织和运行测试用例,提供断言功能以及测试报告。 5. Grid:Selenium Grid用于分布式测试,它可以同时在多台机器上运行测试,大大提高了...
开发者可以使用JUnit或TestNG等测试框架,结合Selenium的Java API编写测试用例,进行功能和回归测试。 四、实际应用 在实际工作中,Selenium 2.53.0常用于以下场景: 1. **功能测试**:通过编写自动化脚本,验证...
Selenium还可以结合数据驱动测试框架,如JUnit、TestNG等,将测试数据与测试逻辑分离,这样可以轻松地改变测试数据,而不必修改测试代码。这种方法对于执行大量数据组合的测试非常有效,如登录验证、购物车结算等...
Users will learn how to design and build a Selenium Grid from scratch to allow the framework to scale and support different browsers, mobile devices, versions, and platforms, and how they can leverage...