WTD UI自动化和接口测试开发文档
###WTD Case 开发手册
作者 何坤158109016@qq.com V2.0 2017/3/12 http://snappydata.top
框架目录结构
1. WTD 测试框架免费下载:wtd 或者 wtd
2. WTD UI自动化和接口自动化开发手册请打开以下文件:
WTD case开发手册
3. 程序运行界面
4.生成的log文件及截图
5.自动生成的邮件报告
####文档目录
- Case需存放的目录:
- Case的形式:
- Case的命名规范:
- Case的具体实现步骤:
- Case可使用的变量及方法:
- 如何调试运行case:
- 如何部署环境:
- 一个Case实例:
Case需存放的目录:
- 在WTD项目中,将新功能性case新建在wtdwebuicases包中,并且此包要确定是一个sources root目录,默认导入的框架中的此目录已经是sources root目录。
- 将接口性case放入wtdapicases目录中。
Case的形式:
- 功能性Case的实体是一个java文件。
- 接口性Case的实体是一个xml文件。
Case的命名规范:
- Case开头已Tc_开头,如:Tc_LogIn。Tc是TestCase的缩写。
Case的具体实现步骤:
- ui 自动化 Case:
- 在wtdwebuicases包中建立子package比如member,然后建立对应的case比如TC_BaiDuSearch.java。
- 新建case类必须继承BaseCase类:public class TC_BaiDuSearch extends BaseCase{}
- Case必须实现无参方法execute();在这个方法里做具体的事情。
- 具体参考TC_BaiDuSearch case模板。
- 接口测试 Case:
- 在wtdapicases中新建TC_XiaomuwuAbout.xml文件,支持post,get,jsonrpc类型。
- 写上接口case的测试地址。
- 有需要可以设置全局变量为以后的case用。如:
<setGlobalVarible name="guid" value="$Cookie.guid"/>
或者<setGlobalVarible name="sToken" value="$Response.sToken" />
- 设置测试点(可以多个),其中包括期望返回值(可正则表达式),执行测试点之前可执行其他公共接口。改测试点的各个参数。如:
<test name="the correct values" expectContansString='iStatus":1' preExcution="loginByApp"> <parameter name="userId" value="1800012315" /> </test> <test name="the wrong values" expectContansString='iStatus":0'"> <parameter name="userId" value="1800012111" /> </test>
- 接口Case可以自定义全局变量,也可以用系统的中变量。系统中的变量包括:
$Cookie,$Response,$PreResponse
UI 自动化测试case可使用的变量及方法:
- SessionData 类:
变量名 | 描述 |
---|---|
webDriver | Webdriver 的一个实例,用于case进行页面各种操作的一个对象,可以直接在case中调用如,webDriver.get(); |
hostName | 当前测试的主要的host name, 可以直接在case中调用 |
caseName | 当前测试的case 名字, 可以直接在case中调用 |
logFolder | 当前case生成log和result文件的目录, 可以直接在case中调用 |
logger | 可以用来记录log到log文件, 可以直接在case中调用 |
isOnlineTest | 判断当前环境是否为线上测试环境 |
screenCapture()方法:返回类型:String 调用此方法会截一张当前的图片保存到当前case 的log文件夹里。
setDescription(String)方法: 返回类型:void 调用此方法会为当前case设置描述信息。
setErrorInfo(String)方法:返回类型:void 调用此方法会为当前case设置一些错误的log信息,便于在log文件中查看错误原因。
setPointResult(String name,String description,String result,String errorInfo)方法:返回类型:void 调用此方法会将每个测试点的结果写进result.xml和log文件中。注意:测试点是包含在每个case中的,每个case至少包含一个测试点,也就是说每个case至少调用此方法一次。
clickBy (By by)方法:返回类型:boolean 调用此方法会点击页面一个控件,并返回是否执行成功。
clickById(String id)方法:返回类型:boolean 调用此方法会点击页面一个控件,并返回是否执行成功。
clickByLinkText(String link)方法:返回类型:boolean 调用此方法会点击页面一个控件,并返回是否执行成功。
sendKeys(By by, String value)方法:返回类型:boolean 调用此方法会向一个控件输入信息,并返回是否执行成功。
sendKeysById(String id, String value)方法:返回类型:boolean 调用此方法会向一个控件输入信息,并返回是否执行成功。
isExist(By by)方法:返回类型:boolean 调用此方法会判断某个元素是否存在,并返回判断结果,true是找到该元素。
isTextExist(String content)方法:返回类型:boolean 调用此方法会判断是否存在某个值的元素,并返回判断结果,true是找到该元素。比如判断当前页面是否有“注册”字段。
isCurrentURL(String url)方法:返回类型:boolean 调用此方法会判断当前URL是否和传入的URL一样,并返回判断结果,true是表示一样的。
更多方法可以参考com.pub.wtd.common.BaseCase 类和webdiver对象中的方法。或者登陆 小木屋
如何调试运行case:
- 调试运行case:
- 在Intellij IDEA 中打开整个WTD项目。
- 编写接口测试case和ui 自动化测试case,具体可以参考项目中的demo。
- 更改config/conf/wtd.cfg.xml中测试的hostname,测试浏览器,测试人员邮箱的信息。
- 在conig/caselist.cfg.xml中添加要调试运行的case。
- 运行或者调试运行runcasestest 包中的RunCaseTest类。
如何部署环境:
- 更改config/conf/wtd.cfg.xml中测试的hostname,测试浏览器,测试人员邮箱的信息。
- 在conig/caselist.cfg.xml中添加要测试的case。
- 双击运行wtd.bat或者通过任意windows shell环境运行wtd.bat(推荐)。
一个接口 Case实例:
<?xml version="1.0" encoding="utf-8" ?>
<case description="change the userlogin passwd" type="post"><testApi api="http://xxx.xxx.qa.ipo.com/api/internal/user/changepwd.html" /><setGlobalVarible name="guid" value="$Cookie.guid"/><setGlobalVarible name="token" value="$Response.token"/><test name="the correct values" expectContansString='iStatus":1' preExcution="logintoManage"><parameter name="iUserID" value="$PreResponse.istatus" /><parameter name="sOldPassword" value="a592ee46b591ba0c8bcce6a27c109f65" /><parameter name="sNewPassword" value="4e1cea91bcd58ab5982ab1b50c2a782b" /></test> <test name="the correct values" expectContansString='iStatus":1'><parameter name="iUserID" value="45671" /><parameter name="sOldPassword" value="4e1cea91bcd58ab5982ab1b50c2a782b" /><parameter name="sNewPassword" value="a592ee46b591ba0c8bcce6a27c109f65" /></test>
</case>
一个UI自动化 Case实例:
public class TC_BaiDuSearch extends BaseCase {/*** 每一个ui自动化case都必须实现execute()方法,此方法是此case的入口。* 编写case时可以参考以下步骤:* 1,打开首页或者一个链接或者自己定义的一个页面:webDriver.get(String),new HomePage(sessionData).goToPage(),* 2,设置这个case的描述信息:setDescription(String)* 3,执行某些操作。* 4,检查预期值或者页面元素并设置这个测试点测试通过或者测试失败:setPointResult("", "", "pass", "NULL");* 5,有必要时可以截取当前页面的截屏:screenCapture()** 对于第三步,目前支持以下操作。* 1,查找页面元素:findElement(By),findElementById(String),findElements(By).* 2,查找元素的值(也就是元素的value),findElvalue(By)* 3,点击页面元素:clickBy(By),clickById(String),clickByLinkText(String)* 4,判断页面元素是否存在:isExist(By)* 5,判断文本是否存在:isTextExist(String)* 6,向诸如文本框之类的控件输入值:sendKeysBy(By,String),sendKeysById(By,String)* 7,所有webdriver支持的操作。** 更多更新信息请到 snappydata.top*/public void execute() {//new HomePage(sessionData).goToPage();// 自定义一个页面,所有case都可以共享这个页面,直接在case中打开这个页面。webDriver.get("http://www.baidu.com");//利用webdriver执行打开页面setDescription("测试百度搜索功能");// 设置case的描述信息if (isCurrentURL(hostName+"/")|| isCurrentURL(hostName )) {// 判断当前页面是否是百度主页setPointResult("GoToHome", "回到首页", "pass", "NULL");//设置此测试点通过} else {setPointResult("GoToHome", "回到首页", "fail","can not go to home page");//设置此测试点失败}String path = screenCapture();// 截取当前页面截屏testSearch();//测试搜索功能}public void testSearch(){sendKeysById("kw","snappydata.top");clickById("su");if(isTextExist("snappydata")){setPointResult("测试搜索","测试搜索功能","pass","NULL");}else{setPointResult("测试搜索","测试搜索功能","fail","百度搜索测试失败");screenCapture();// 截取当前页面截屏}}
}
转载于:https://my.oschina.net/u/3345879/blog/857133
WTD UI自动化和接口测试开发文档相关推荐
- Android UI 设计规范,androidsdk开发文档
底部动作条是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能.底部动作条呈现了简单.清晰.无需额外解释的一组操作. 通常以列表形式出现,支持上下滚动.
- Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建
原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...
- Admui 源码、Admui通用框架、Admui 开发文档、admui框架使用经验
QQ194633530 索取源码 基本概述 Admui 的追求的目标是做到开箱即用,无需了解框架内部机制,但是我们也深知一套框架不可能满足所有客户的所有需求,所以我们仍然为您准备了前端的开发文档,以 ...
- 开源轻量级办公系统Sandbox介绍以及配套开发文档连载
1.Sandbox介绍 Sandbox是一个基于django框架开发的轻量级办公平台,主要模块有:权限控制.资产(库存)管理.设备管理.客户信息管理和工单流程管理,其目的在于建立一套规范化.统一化和清 ...
- Android官方开发文档Training系列课程中文版:目录
原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...
- Android官方开发文档Training系列课程中文版:创建自定义View之View的创建
原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...
- 开发文档怎么编写_PoC 编写指南
什么是 PoC PoC(全称: Proof of Concept), 中文译作概念验证.在安全界,你可以理解成为漏洞验证程序.和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观点 ...
- 知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?
前言 微信小程序作为近几年"微服务"的杰出代表,应用十分广泛.小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验 ...
- autojs 开发文档集合
加入我们的QQ群553908361,和各作者同群交流 教程会优先发布于收费脚本v群. 该代码选自于aj开发者的文档,群里有人反馈开发文档打开慢.所以做了这个.方便搜索.如有侵权,请私信我进行删除 同时 ...
最新文章
- 关于matlab鼠标响应
- phpstorm 点击方法跳转 后 返回 原来的位置
- python编程从入门到实践看完了看什么-小白Python编程从入门到实践——列表是什么...
- 支付开发填坑记之支付宝
- Rsync安装与配置
- 使用BeanPostProcessor为bean做后置处理
- 博弈论(一)基本概念
- 迄今以来在硅谷的最大押注:摩根大通雇超千人专注金融科技
- 对话 “智能+”平台大师,看IBM如何重塑企业数字化
- DarkNet yoloV2 转到caffe使用
- python题目-奇偶数调用函数
- 小球碰撞python代码_python开发的小球完全弹性碰撞游戏代码_python_脚本之家
- 华为手机进入汽车自动打开热点
- 红绿3d眼镜与红蓝3d眼镜区别_3D眼镜是指什么原理?
- arduino mega针脚_Arduino MEGA串口TX1、RX1使用方法
- 网上订餐系统java论文_网上订餐系统的毕业设计
- PostgreSQL pgsql身份证格式校验,身份证格式提取api
- Smoke testing,Sanity testing and Regression testing
- 求职简历撰写要点和模板分享
- R语言学习笔记——高级篇:第十四章-主成分分析和因子分析