Eclipse中怎么安装TestNGpython 单元测试框架架

一、环境安装
配置好Java环境变量
安装Eclips
这些网上都有,就不再详细介绍。
资源分享链接:
2、安装TestNG插件
在线安装由于网速原因,速度较慢。下面是离线安装方式。
(1)解压eclipse-testng离线包.zip
(2)将【eclipse-testng离线包/feature】中的文件夹org.testng.eclipse_6.8.6.5复制到【MyEclipse安装目录/features】目录下
(3)将【eclipse-testng离线包/org.testng.eclipse_6.8.6.5】文件夹复制到【MyEclipse安装目录/plugins】目录下
(4)重启MyEclipse,Windows - show view - TestNG
3、安装Ant
(1)解压apache-ant-1.9.6-bin.zip到任意目录下
(2)配置Ant环境变量,在Path变量末尾添加:&Ant目录&/
二、在Eclipse中创建Java工程
1、Eclipse -& File -& New -& Java Project,如下图,在弹窗中填入Project name,点击Finish,即可完成工程的创建。
2. 导入相关的jar包:
工程上右键 -& Build Path -& Configure Build Path...,如下图所示,打开Build Path配置窗口。
导入已经安装的TestNG插件,如下图所示完成testNG的导入:
3. 从资源分享链接中下载lib.zip,解压开,按下图方式导入里面的jar包。导入的这些jar包会在程序中用到。
三、使用TestNG框架编写测试用例
1. 创建src文件夹,存放测试相关的代码,在工程上右键 -& New -& Folder,填入文件名字:src。
2. 按照数据与代码分离和公共方法提取的原则,我的代码结构如下划分:
3. 脚本编写顺序
3.1 全局配置文件(GlobalSettings.java)
存放一些工程全局的变量,比如baseUrl、timeout等;
3.2 Http协议实现(HttpClientHelper.java)
根据项目接口使用的协议,实现相关的请求。我们的项目有两种方式,一种是使用NameValuePair的方式封装请求参数,一种是使用JSONObject的方式封装请求参数,因此针对这两种方式都做了代码实现。
3.3 接口实现(GList_API.java)
以“创建G单”为例,实现该接口:
3.4 准备测试数据(TestData.java)
为接口准备测试数据。
3.5 测试数据参数化(GListDataProvider.java),返回的参数个数需要与testsuit中函数参数个数一致。
3.6 测试用例suit(GListCURD.java)
4. 测试用例调试与执行
按照步骤三写好了所有的用例,可以进行用例的调试与执行了。
4.1 测试用例脚本调试
在步骤三的测试用例suit GListCURD.java上右键,“Debug as”或“Run as” -& &TestNG Test&,即可运行该脚本。
4.2 测试用例脚本执行
有两种方式可以运行该脚本,testNG或者ant。
使用testNG运行,操作如步骤4.1。
使用ant运行,需要创建xml,请参考资源库中的build.xml、smokeTest.xml。若需要生成testNG报告,还需要下载test-result.xsi文件。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:20475次
排名:千里之外
原创:49篇
转载:152篇
(1)(1)(7)(4)(15)(8)(169)Java自动化测试框架TestNG之入门篇 - 简书
Java自动化测试框架TestNG之入门篇
TestNG,即Testing, Next Generation,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架。TestNG设计涵盖所有类型的测试:单元,功能,端到端,集成等。学习TestNG之前需要先学习编程语言Java、配置本地JDK环境(JDK1.5版本或以上)和安装java开发工具eclipse。1)在eclipse中安装testNG打开Eclipse
Help -&MarketPlace,在搜索框里面输入TestNG搜索,然后安装TestNG插件。
2)安装成功后,在项目的package上右键可以看到TestNG--&Create TestNG class。
这里可以勾选TestNG的注解方法。@BeforeSuite: 被此注解的方法将在所有测试运行之前运行该方法。@AfterSuite: 被此注解的方法将在所有测试运行之后运行该方法。@BeforeTest: 被此注解的方法,将在测试运行之前运行。@AfterTest: 被此注解的方法,将在测试运行之后运行。@BeforeClass: 被此注解的方法,将在当前类的第一个测试方法调用之前运行@AfterClass: 被此注解的方法,将在当前类的所有测试方法调用之后运行@BeforeMethod: 被此注解的方法,将在每个测试方法调用之前运行@AfterMethod: 被此注解的方法,将在每个测试方法调用之后运行。@DataProvider: 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。我们先勾选一下@BeforeTest、@AfterTest、@DataProvider,自动生成的类文件如下:
这里报错了,是因为我们还没有将TestNG加入到我们的library中来,点击错误,会有import Library的选项,点击便有了,如图
至此环境搭建完成,可以开始写测试的case了。
3)从一个简单的测试case开始入手,代码如下:
package com.pingan.ff.
import org.testng.annotations.T
import org.testng.annotations.DataP
import org.testng.annotations.BeforeT
import org.testng.annotations.AfterT
public class NewTest {
@Test(dataProvider = "dp")
public void f(Integer n, String s) {
System.out.println("第一个参数是"+n+",第二个参数是"+s);
@DataProvider
public Object[][] dp() {
return new Object[][] {
new Object[] { 1, "a" },
new Object[] { 2, "b" },
@BeforeTest
public void beforeTest() {
System.out.println("------------开始测试------------");
@AfterTest
public void afterTest() {
System.out.println("------------结束测试------------");
右键Run As --& TestNG Test,运行后结果如下:
------------开始测试------------
第一个参数是1,第二个参数是a
第一个参数是2,第二个参数是b
------------结束测试------------
从测试的结果可以看到执行的顺序是beforeTest()--&Test()--&afterTest(),同时Test()方法从dataProvider dp里面接收参数。4)TestNG默认情况下,会生成两种类型的测试报告HTML和XML,测试报告位于 "test-output" 目录下。右键项目刷新一下项目就可以看到:
用浏览器打开/test-output/Default suite/Default test.html可以看到如下图的测试报告:TestNG系列教程:并行执行测试 - ImportNew
| 标签: ,
并行(多线程)技术在软件术语里被定义为软件、操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力。TestNG允许我们以并行(多线程)的方式来执行测试。这就意味着基于TestNG测试组件的配置,多个线程可以被同时启动然后分别执行各自的测试方法。相对于传统的单线程执行测试的方式,这种多线程方式拥有很大的优势,主要是它可以减少测试运行时间,并且可以验证某段代码在多线程环境中运行的正确性。
并行执行测试的优势
如何并行地执行测试方法
如何并行地执行测试类
如何并行地执行同一测试套件内的各个测试组件
如何配置需要在多线程环境中执行的测试方法
并行执行测试的优势
并行(多线程)执行测试可以给用户带来很多好处,主要包括以下两点:
1)减少了执行时间:并行测试也就意味着多个测试可以在同一时间被同时执行,从而减少了整体测试所花费的时间。
2)允许多个线程并行地测试同一个测试组件:有了这个特性,我们就能够写出相应的测试用例来验证应用程序中包含多线程部分的代码的正确性。
以上特性被广泛地应用在QA领域的自动化功能测试方面。通过简单的配置,QA人员就可以很轻松地使得他们的测试用例在多个浏览器或者操作系统中并行地执行。
TestNG提供了三种不同类型的配置方案来实现并行测试。
如何并行地执行测试方法
TestNG为我们提供了多种方式来实现并行测试,其中一种就是每一个独立的线程分别执行各自的测试方法。这种方式能够显著地减少测试执行时间,这是因为当有越多的测试方法被并行执行时,总体测试消耗时间将会越少。
package com.howtodoinjava.
import org.testng.annotations.AfterM
import org.testng.annotations.BeforeM
import org.testng.annotations.T
public class ParallelMethodTest
@BeforeMethod
public void beforeMethod() {
long id = Thread.currentThread().getId();
System.out.println(&Before test-method. Thread id is: & + id);
public void testMethodsOne() {
long id = Thread.currentThread().getId();
System.out.println(&Simple test-method One. Thread id is: & + id);
public void testMethodsTwo() {
long id = Thread.currentThread().getId();
System.out.println(&Simple test-method Two. Thread id is: & + id);
@AfterMethod
public void afterMethod() {
long id = Thread.currentThread().getId();
System.out.println(&After test-method. Thread id is: & + id);
上述测试类包含了两个测试方法,每个测试方法在执行时都会在控制台中打印出一条信息。每个测试方法以及它们各自的beforeMehod、afterMethod方法都会通过Thread.currentThread.getId()这段代码打印出执行该测试方法的线程的ID。
在项目中新建一个名为methods-test-testng.xml的文件并将下述代码写入该文件中。
&suite name=&Test-method Suite& parallel=&methods& thread-count=&2& &
&test name=&Test-method test& group-by-instances=&true&&
&class name=&com.howtodoinjava.parallelism.ParallelMethodTest& /&
&/classes&
在Eclipse中选中该文件并且以TestNG测试套件方式运行它。你将会在控制台中看到以下输出信息:
Before test-method. Thread id is: 10
Before test-method. Thread id is: 9
Simple test-method Two. Thread id is: 10
Simple test-method One. Thread id is: 9
After test-method. Thread id is: 10
After test-method. Thread id is: 9
注意:上述截图中的ThreadId可能与你本地控制台中输出的ThreadId不同,这是因为ThreadId的值是在程序运行时由JVM动态指派的。
从上述测试结果中我们可以很清晰地看出:上述两个测试方法以及各自相应的beforeMethod和afterMethod方法是在两个独立的线程中执行的。我们可以通过在控制台中输出的ThreadId来证明这一点。
如何并行地执行测试类
在下个例子中,我们会说明如何并行地执行测试类:同一个测试组件(test execution)中的各个测试类将会在独立的线程中并行地执行。
ParallelClassesTestOne.java
public class ParallelClassesTestOne
@BeforeClass
public void beforeClass() {
long id = Thread.currentThread().getId();
System.out.println(&Before test-class. Thread id is: & + id);
public void testMethodOne() {
long id = Thread.currentThread().getId();
System.out.println(&Sample test-method One. Thread id is: & + id);
public void testMethodTwo() {
long id = Thread.currentThread().getId();
System.out.println(&Sample test-method Two. Thread id is: & + id);
@AfterClass
public void afterClass() {
long id = Thread.currentThread().getId();
System.out.println(&After test-class. Thread id is: & + id);
ParallelClassesTestTwo.java
public class ParallelClassesTestTwo
@BeforeClass
public void beforeClass() {
long id = Thread.currentThread().getId();
System.out.println(&Before test-class. Thread id is: & + id);
public void testMethodOne() {
long id = Thread.currentThread().getId();
System.out.println(&Sample test-method One. Thread id is: & + id);
public void testMethodTwo() {
long id = Thread.currentThread().getId();
System.out.println(&Sample test-method Two. Thread id is: & + id);
@AfterClass
public void afterClass() {
long id = Thread.currentThread().getId();
System.out.println(&After test-class. Thread id is: & + id);
在项目中新建一个名为classes-test-testng.xml的文件并将下述代码写入该文件中:
&suite name=&Test-class Suite& parallel=&classes& thread-count=&2& &
&test name=&Test-class test& &
&class name=&com.howtodoinjava.parallelism.ParallelClassesTestOne& /&
&class name=&com.howtodoinjava.parallelism.ParallelClassesTestTwo& /&
&/classes&
在Eclipse中选中该文件并且以TestNG测试套件方式运行它。你将会在控制台中看到以下输出信息:
Before test-class. Thread id is: 10
Before test-class. Thread id is: 9
Sample test-method One. Thread id is: 9
Sample test-method One. Thread id is: 10
Sample test-method Two. Thread id is: 10
After test-class. Thread id is: 10
Sample test-method Two. Thread id is: 9
After test-class. Thread id is: 9
从上述测试结果中我们可以很清晰地看出:上述两个测试类以及各自相应的beforeClass和afterClass方法是在独立的两个线程中执行的。我们可以通过在控制台中输出的ThreadId来证明这一点。
如何并行地执行同一测试套件内的各个测试组件
接下来我们会一起学习如何并行地执行同一个测试套件内的各个测试组件,即各个测试组件会分别在独立的线程中执行。
package com.howtodoinjava.
import org.testng.annotations.AfterC
import org.testng.annotations.AfterT
import org.testng.annotations.BeforeC
import org.testng.annotations.BeforeT
import org.testng.annotations.P
import org.testng.annotations.T
public class ParallelSuiteTest
String testName = &&;
@BeforeTest
@Parameters({ &test-name& })
public void beforeTest(String testName) {
this.testName = testN
long id = Thread.currentThread().getId();
System.out.println(&Before test & + testName + &. Thread id is: & + id);
@BeforeClass
public void beforeClass() {
long id = Thread.currentThread().getId();
System.out.println(&Before test-class & + testName + &. Thread id is: &
public void testMethodOne() {
long id = Thread.currentThread().getId();
System.out.println(&Sample test-method & + testName
+ &. Thread id is: & + id);
@AfterClass
public void afterClass() {
long id = Thread.currentThread().getId();
System.out.println(&After test-method
& + testName
+ &. Thread id is: & + id);
@AfterTest
public void afterTest() {
long id = Thread.currentThread().getId();
System.out.println(&After test
& + testName + &. Thread id is: & + id);
在项目中新建一个名为suite-test-testng.xml的文件并将以下代码写入该文件中:
&suite name=&Test-class Suite& parallel=&tests& thread-count=&2&&
&test name=&Test-class test 1&&
&parameter name=&test-name& value=&test-method One& /&
&class name=&com.howtodoinjava.parallelism.ParallelSuiteTest& /&
&/classes&
&test name=&Test-class test 2&&
&parameter name=&test-name& value=&test-method One& /&
&class name=&com.howtodoinjava.parallelism.ParallelSuiteTest& /&
&/classes&
在Eclipse中选中该文件并且以TestNG测试套件方式运行它。你将会在控制台中看到以下输出信息:
Before test Test One. Thread id is: 9
Before test Test Two. Thread id is: 10
Before test-class Test One. Thread id is: 9
Before test-class Test Two. Thread id is: 10
Sample test-method Test One. Thread id is: 9
Sample test-method Test Two. Thread id is: 10
After test-method
Test Two. Thread id is: 10
After test-method
Test One. Thread id is: 9
After test
Test One. Thread id is: 9
After test
Test Two. Thread id is: 10
从上述测试结果中我们可以很清晰地看出:上述两个测试组件是在独立的两个线程中分别执行的。我们可以通过在控制台中输出的ThreadId来证明这一点。
如何配置一个需要在多线程环境中执行的测试方法
之前我们讨论了如何并行(多线程)地执行测试方法,测试类以及测试组件。TestNG同时也提供了一种灵活的方式来配置需要在多线程环境下运行的测试方法:只要在该测试方法的@Test注解上配置一些信息,我们就能启用多线程模式。
public class IndependentTest
@Test(threadPoolSize = 3, invocationCount = 6, timeOut = 1000)
public void testMethod()
Long id = Thread.currentThread().getId();
System.out.println(&Test method executing on thread with id: & + id);
上述测试方法是通过在@Test注解中配置threadPoolSize这个属性来进入多线程模式的。threadPoolSize被设为3,这就说明了该测试方法将会在三个不同的线程中同时执行。剩余两个属性:invocationCount配置的是该测试方法应被执行的总次数,timeOut配置的是每次执行该测试方法所耗费时间的阈值,超过阈值则测试失败。
在项目中新建一个名为independent-test-testng.xml的文件,并写入下述代码:
&suite name=&Independent test Suite& &
&test name=&Independent test&&
&class name=&com.howtodoinjava.parallelism.IndependentTest& /&
&/classes&
在Eclipse中选中该文件并以TestNG测试套件方式运行。你将会在控制台中看到以下输出信息
Test method executing on thread with id: 11
Test method executing on thread with id: 10
Test method executing on thread with id: 9
Test method executing on thread with id: 11
Test method executing on thread with id: 11
Test method executing on thread with id: 10
在这里,我们可以看出该测试方法被执行了多次,而且它的执行次数跟invocationCount所指定的次数相同。而且从输出信息中,我们也可以很清晰地看到该测试方法每次执行都是在不同的线程中完成的。当我们需要按照某一固定次数,在多线程环境下运行某些测试方法时,上述特性会很有帮助,因为它避免了我们把整个测试套件都并行执行多次的代价。
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
Hi,请到伯乐在线的小组发帖提问,支持微信登录。链接是: http://group.jobbole....
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:@
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2017 ImportNewEclipse下安装TestNG
1. 选择菜单:Help-&Install New
Software,然后在弹出的窗口中的Work with后面的输入框中输入:
2. 然后点击Add按钮,选中TestNG后点击Next安装即可
3. 重启Eclipse完成安装
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 android 单元测试框架 的文章

 

随机推荐