###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:
  1. 在wtdwebuicases包中建立子package比如member,然后建立对应的case比如TC_BaiDuSearch.java。
  2. 新建case类必须继承BaseCase类:public class TC_BaiDuSearch extends BaseCase{}
  3. Case必须实现无参方法execute();在这个方法里做具体的事情。
  4. 具体参考TC_BaiDuSearch case模板。
  • 接口测试 Case:
  1. 在wtdapicases中新建TC_XiaomuwuAbout.xml文件,支持post,get,jsonrpc类型。
  2. 写上接口case的测试地址。
  3. 有需要可以设置全局变量为以后的case用。如:
<setGlobalVarible name="guid" value="$Cookie.guid"/>
或者<setGlobalVarible name="sToken" value="$Response.sToken" />
  1. 设置测试点(可以多个),其中包括期望返回值(可正则表达式),执行测试点之前可执行其他公共接口。改测试点的各个参数。如:

    <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>
    
  2. 接口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:
  1. 调试运行case:
  2. 在Intellij IDEA 中打开整个WTD项目。
  3. 编写接口测试case和ui 自动化测试case,具体可以参考项目中的demo。
  4. 更改config/conf/wtd.cfg.xml中测试的hostname,测试浏览器,测试人员邮箱的信息。
  5. 在conig/caselist.cfg.xml中添加要调试运行的case。
  6. 运行或者调试运行runcasestest 包中的RunCaseTest类。
如何部署环境:
  1. 更改config/conf/wtd.cfg.xml中测试的hostname,测试浏览器,测试人员邮箱的信息。
  2. 在conig/caselist.cfg.xml中添加要测试的case。
  3. 双击运行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自动化和接口测试开发文档相关推荐

  1. Android UI 设计规范,androidsdk开发文档

    底部动作条是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能.底部动作条呈现了简单.清晰.无需额外解释的一组操作. 通常以列表形式出现,支持上下滚动.

  2. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  3. Admui 源码、Admui通用框架、Admui 开发文档、admui框架使用经验

    QQ194633530  索取源码 基本概述 Admui 的追求的目标是做到开箱即用,无需了解框架内部机制,但是我们也深知一套框架不可能满足所有客户的所有需求,所以我们仍然为您准备了前端的开发文档,以 ...

  4. 开源轻量级办公系统Sandbox介绍以及配套开发文档连载

    1.Sandbox介绍 Sandbox是一个基于django框架开发的轻量级办公平台,主要模块有:权限控制.资产(库存)管理.设备管理.客户信息管理和工单流程管理,其目的在于建立一套规范化.统一化和清 ...

  5. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  6. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  7. 开发文档怎么编写_PoC 编写指南

    什么是 PoC PoC(全称: Proof of Concept), 中文译作概念验证.在安全界,你可以理解成为漏洞验证程序.和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观点 ...

  8. 知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

    前言 微信小程序作为近几年"微服务"的杰出代表,应用十分广泛.小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验 ...

  9. autojs 开发文档集合

    加入我们的QQ群553908361,和各作者同群交流 教程会优先发布于收费脚本v群. 该代码选自于aj开发者的文档,群里有人反馈开发文档打开慢.所以做了这个.方便搜索.如有侵权,请私信我进行删除 同时 ...

最新文章

  1. 关于matlab鼠标响应
  2. phpstorm 点击方法跳转 后 返回 原来的位置
  3. python编程从入门到实践看完了看什么-小白Python编程从入门到实践——列表是什么...
  4. 支付开发填坑记之支付宝
  5. Rsync安装与配置
  6. 使用BeanPostProcessor为bean做后置处理
  7. 博弈论(一)基本概念
  8. 迄今以来在硅谷的最大押注:摩根大通雇超千人专注金融科技
  9. 对话 “智能+”平台大师,看IBM如何重塑企业数字化
  10. DarkNet yoloV2 转到caffe使用
  11. python题目-奇偶数调用函数
  12. 小球碰撞python代码_python开发的小球完全弹性碰撞游戏代码_python_脚本之家
  13. 华为手机进入汽车自动打开热点
  14. 红绿3d眼镜与红蓝3d眼镜区别_3D眼镜是指什么原理?
  15. arduino mega针脚_Arduino MEGA串口TX1、RX1使用方法
  16. 网上订餐系统java论文_网上订餐系统的毕业设计
  17. PostgreSQL pgsql身份证格式校验,身份证格式提取api
  18. Smoke testing,Sanity testing and Regression testing
  19. 求职简历撰写要点和模板分享
  20. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

热门文章

  1. 【转录集锦】夸夸其谈天下事,不肯俯首看苍生
  2. 帝国列表页 pHP原代码页,帝国模板列表页和内容页的伪静态规则实现方法
  3. SEO人员,怎么将网站关键词排进SERP前十名?
  4. 腾讯 微信春招nlp实习生一面二面(猝)
  5. REVV Racing 联手 SuperPlastic,为您带来 Chunder 迷宫锦标赛
  6. 激光雷达和相机的联合标定
  7. centos 安装迅搜
  8. 福州大学计算机基础教学与等级考试暂行规定,福州大学计算机基础教学与等级考试暂行规定...
  9. FOC 电流采样为什么不准?你忽略了这个细节
  10. linux下给文件赋予所有权限