1:导入Maven依赖<dependency> <groupId>com.aventstack</groupId> <artifactId>extentreports</artifactId> <version>3.0.3</version></dependency>2:编写ExtentTestNGIReporterListener监听器ExtentTestNGIReporterListener监听器主要用于生…
转载:http://www.51testing.com/html/58/n-3721258.html 由于一直忙于功能和性能测试,接口自动化测试框架改造的工作被耽搁了好久.近期闲暇一些,可以来做点有意思的事情. 先前的自动化测试框架完全是用Java纯手工编写,核心交易接口代码.测试脚本.测试数据都进行了抽象和分离,测试报告也是自己设计的html模版输出,如果项目仅仅本地实施运行,也完全能满足目前的自动化测试需求. 但为了自动化测试变得更加高大上,并配合公司实施持续集成的工作开展,决定将现有的接口…
其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://github.com/xiaoshitoutester/UItestframework 这里完全是干货,中间涉及到很多知识点,可以下载到本地然后,修改下项目地址,编写测试用例就可以执行了,日志,报告什么的都有: 这里日志打印是我新加的,在自动化测试中,经常出现各种奇怪的问题,导致不好定位问题,现在我将webd…
上一篇我们讲了怎么利用Java的反射机制,将Excel的读取到的数据,赋值给我们构造函数中定义的变量. 接下来就简单了,我们将实际实现这个读取的简单过程.来看下面一段代码. private static <T> List<T> transToObject(Class<T> clz,Workbook xssfWorkbook, String sheetName) throws InstantiationException, IllegalAccessException,…
TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母). TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展.它的灵感来源于JUnit.它的目的是优于JUnit,尤其是在用于测试集成多类时. TestNG的创始人是Cedric Beust(塞德里克·博伊…
对于测试工程师新手来说,最痛苦的莫过于入门,其实只要入门3个月左右,对于自动化测试,所有的测试工程师除了喜爱,就是更爱.自动化测试工作,是从根本上解放人性,不用重复去完成鼠标的点点点,例如以下测试常常要手工完成的功能模块: 1. 注册(测试点: 手机注册,邮箱注册,用户名注册,然后是个人注册,企业注册的各种角色注册,之后是注册失败,失败信息验证...) 2. 登录 3. 商品&商品配置 4. 购物车 5. 下单 6. 支付 其中要整个网站跑一遍,再熟悉业务的测试同学也要花费4-8个小时,不吃不喝…
经过上两篇文章的讲解,我们已经完成接口自动化的基础框架,现在开始根据实际项目丰满起来. 在PyCharm中新建项目,项目工程结构如下: config:配置文件夹,可以将一些全局变量放于配置文件中,方便调用.例如:URL地址.端口,开发如经常更换端口在配置文件中便可修改. data:测试用例表格文件夹,存放测试用例.xls和读取写入excel表的文件. demo:程序公共类文件夹,存放程序公共类,例如:POST/GET请求,获取Token等. kit:相关测试工具,压缩.发送邮件. main:程序…
到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当前比较流行的Java应用程序测试框架有JUnit和TestNG两种, 从上图可以看到,相对于JUnit4来说,TestNG更具竞争优势,功能完备.而且,从实际使用的角度来说,参数化的设置及功能,以及处理有上下依赖关系的测试时,JUnit测试框架有着明显的劣势.因此,我们在这里着重学习TestNG框架…
测试框架有很多,比如常用的 UI自动化测试框架 ①.java+selenium/appium+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine ②.python+selenium/appium+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine ③.python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlin…
自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 进去后选择电脑配置对应版本的JDK版本. 下载成功以后直接下一步,安装默认的路径.这里注意:安装的过程中会提示一个JRE的安装路径,需要注意一下,一个是运行环境(JRE),一个是编译的环境,JDK中默认会有JRE. 1.2配置环境变量  打开电脑中的…
理论 TestNG,即Testing, NextGeneration,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试.因为TestNG是从Junit的思想构建而来,所以TestNG具备junit等所不具备的多重功能.而且TestNG目前的使用比较广泛,google的一个selenium自动化项目组即采用的是selenium rc的java 接口+ testNG结合的方式.写一个测试通常分为三步:1.编…
简介 其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识.希望大家茅塞顿开 ,有着更进一步认识和了解测试组. 一.Test Group(测试组) TestNG 允许你将复杂的测试方法归类为不同的组.不仅仅是可以声明某个方法属于某个组,而且还可以让组包含其他的组.这样TestNG可以调用或者请求包含一组特定的组 (或者正则表达式)而排除其他不需要组的集合.这样,如果你打算将测试分成两份的时候,就无需重新编译.这个特点,会给你在划…
简介 按照上一篇的计划,这一篇给小伙伴们分享一下测试方法. 一.设置参数 测试方法是可以带有参数的.每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递正确的参数. 设置方式有两种方法:使用testng.xml或者Data Providers . (一)使用 testng.xml 设置参数 这种方法让我们在testng.xml文件中,定义简单的参数,然后在源码文件引用这些参数. 1.如果只使用相对简单的参数,可以在 testng.xml文件中指定:…
简介 最近忙着装修博客园,没时间更新文章,今天终于抽出时间把上次写的一半的文章给写完了,新的博客园风格,希望大家喜欢.今天继续介绍testng的相关知识--工厂. 工厂允许你动态的创建测试.例如,假设你需要创建一个测试方法,并用它来多次访问一个web页面,而且每次都带有不同的参数: @Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试,其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可以通过代码控制)…
一.并行性和超时 您可以指示TestNG以各种方式在单独的线程中运行测试. 可以通过在suite标签中使用 parallel 属性来让测试方法运行在不同的线程中.这个属性可以带有如下这样的值: 二.并行套件(suites) 如果您正在运行多个套件文件(例如“ java org.testng.TestNG testng1.xml testng2.xml”),并且希望每个套件在单独的线程中运行,则这个很有用.您可以使用以下命令行标志来指定线程池的大小: java org.testng.TestNG…
1.-依赖注入 TestNG支持两种不同类型的依赖项注入:本机(由TestNG本身执行)和外部(由诸如Guice的依赖项注入框架执行). 1.1-本机依赖项注入 TestNG允许您在方法中声明其他参数.发生这种情况时,TestNG将自动用正确的值填充这些参数.依赖注入可以在以下地方使用: 任何@Before方法或@Test方法都可以声明ITestContext类型的参数.任何@AfterMethod方法都可以声明ITestResult类型的参数,该参数将反映刚刚运行的测试方法的结果.任何@Bef…
1.-测试结果 1.1-成功,失败和断言 测试被认为是成功的,如果它不引发任何异常完成,还是它扔的预期异常(请参阅文档expectedExceptions属性上找到的@Test注释). 您的测试方法通常由可能引发异常的调用或各种断言(使用Java“ assert”关键字)组成.“断言”失败将触发AssertionErrorException,这反过来会将方法标记为失败(如果未看到断言错误,请记住在JVM上使用-ea). 这是一个示例测试方法: /** * @author 北京-宏哥 * * Ja…
1.简介 TestNG中用到的annotation的快速预览及其属性. 2.TestNG基本注解(注释) 注解 描述 @BeforeSuite 注解的方法只运行一次,在当前suite所有测试执行之前执行 @AfterSuite 注解的方法只运行一次,在当前suite所有测试执行之后执行 @BeforeClass 注解的方法只运行一次,在当前类中所有方法调用之前执行 @AfterClass 注解的方法只运行一次,在当前类中所有方法调用之后执行 @BeforeTest 只运行一次,所有的测试方法运行…
接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG 作为执行器,poi用于读取存放于excel的接口用例,jsonPath用于校验返回值,以及提取返回值.本框架无需你使用代码编写用例,在excel中即可进行接口用例编写,接口依赖关联,接口断言,控制用例的运行. 技术栈 maven java TestNG httpclient poi jsonpath…
TestNG,即Testing, NextGeneration,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试. 因为TestNG是从Junit的思想构建而来,所以TestNG具备junit等所不具备的多重功能.而且TestNG目前的使用比较广泛,google的一个selenium自动化项目组即采用的是selenium rc的java 接口+ testNG结合的方式. 写一个测试通常分为三步: 1.编…
1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + 方法:此示例显示如何根据测试方法名称传递不同的参数. 2.1代码设计 2.2参考代码 package library; import java.lang.reflect.Method; import org.testng.Assert; import org.testng.annotations.D…
1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场景 测试多个用户的账户登录.假如宏哥有50个用户,需要测试登录.你会怎么测试呢.第一个肯定是写50个测试脚本去验证登录.第二个就是采用DDT,把用户名和密码写到一个表格里,然后依次从表格读取去运行这个登录用例.很显然第一个不可取,如果有1000个,10000个...那你不得累死,很有可能最后落个费力…
1.简介 今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称的首字母排序来执行测试方法.但是有时,我们可能需要以特定顺序调用测试用例中的方法,或者可能希望在方法之间共享一些数据和状态. TestNG支持这种依赖关系,因为它支持在测试方法之间显式依赖的声明. 2.TestNG允许指定依赖关系 ①在@Test注释中使用属性dependsOnMethods ②在@…
1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包含多个测试方法,可进行组嵌套. 2.1代码设计 1.test1属于功能测试,test2属于接口测试,test3属于接口和功能测试 ,test4是不属于任何组,如下图所示: 2.参考代码 package library; import org.testng.annotations.Test; /**…
1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称的首字母排序来执行测试方法,而不是按照你设计的测试用例来执行方法.多的不说,少的不唠,我们开始今天讲解和分享. 2.测试场景 在这里宏哥给小伙伴们或者童鞋们模拟一个测试场景:打开百度首页,搜索selenium的相关内容,看到很多s…
1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些test case执行.今天宏哥主要讲解的就是在工作中遇到这种情况如何处理,不影响你的测试进度. 2.方案 ①代码注销不执行测试用例区域. ②去除不执行测试用例前面@Test注释,这样testNG运行就不会运行到这部分的代码. ③testNG提供了一个enabled的参数,可以设置布尔型,true表示…
1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对于密切关注执行流程或在出现任何故障时进行调试很重要.默认情况下,TestNG 会为其测试执行生成不同类型的报告.这包括一个 HTML 和一个 XML 报告输出.TestNG 还允许其用户编写自己的报告程序并将其与 TestNG 一起使用.还有一个选项可以编写自己的记录器,TestNG 在运行时会通知…
1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助于用户理解测试步骤或测试用例执行期间的任何失败的信息.在TestNG Logs的帮助下,可以在Selenium测试用例执行期间启用日志记录. 这一篇文章宏哥主要介绍利用TestNG中的Report类来实现简单的log输出,在TestNG中有一个Report的类,这个类的作用是,在添加了@Test的方…
1.简介 TestNG为日志记录和报告提供的不同选项.现在,宏哥讲解分享如何开始使用它们.首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录. 2.TestNG自定义日志 2.1创建测试用例类 1.按照宏哥前边的方法,创建一个TestNG类,并命名为:Te…
写在前面 我们刚开始做自动化测试,可能写的代码都是基于原生写的代码,看起来特别不美观,而且感觉特别生硬. 来看下面一段代码,如下图所示: 从上面图片代码来看,具体特征如下: driver对象在测试类中显示 定位元素的value值在测试类中显示 定位元素的方式(By对象)在测试类中显示 代码一报错,还要去测试类里面找是哪段代码报错,要是代码行数几百行时呢,就不好定位问题了 这样的测试脚本组装批量执行,批量报错后,怒号排查,定位问题,很吃力 看看自己有几条命中呢,其他现象就不一一列举了. 1.为什么…