WTD UI自动化和接口测试开发文档

###WTD Case 开发手册html

做者 何坤158109016@qq.com V2.0 2017/3/12 http://snappydata.topjava

框架目录结构

Alt text

1. WTD 测试框架免费下载:wtd 或者 wtd

2. WTD UI自动化和接口自动化开发手册请打开如下文件:

WTD case开发手册git

3. 程序运行界面

输入图片说明 输入图片说明

4.生成的log文件及截图

输入图片说明

5.自动生成的邮件报告

输入图片说明

####文档目录github

  • 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文件夹里。web

  • setDescription(String)方法: 返回类型:void 调用此方法会为当前case设置描述信息。正则表达式

  • setErrorInfo(String)方法:返回类型:void 调用此方法会为当前case设置一些错误的log信息,便于在log文件中查看错误缘由。shell

  • setPointResult(String name,String description,String result,String errorInfo)方法:返回类型:void 调用此方法会将每一个测试点的结果写进result.xml和log文件中。注意:测试点是包含在每一个case中的,每一个case至少包含一个测试点,也就是说每一个case至少调用此方法一次。json

  • clickBy (By by)方法:返回类型:boolean 调用此方法会点击页面一个控件,并返回是否执行成功。windows

  • clickById(String id)方法:返回类型:boolean 调用此方法会点击页面一个控件,并返回是否执行成功。api

  • 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();// 截取当前页面截屏
      }

   }
}
相关文章
相关标签/搜索