QTAF接口自动化框架–从零开始构建接口测试(三)

前提:

  • 本地的jdk1.7+、maven环境已部署OK

  • Example项目可成功运行

接下来就可以创建自己的接口测试maven项目了,也可以直接在Example项目上修改

下面以新建一maven项目为例说明

一、整理待测接口信息

在这儿以微信公众平台的某一接口为例,接口信息见页面: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token 

整理后接口信息如下:

  • 1、接口地址:https://api.weixin.qq.com/cgi-bin/token?  注意最后的?号要带着,LEO下一版本将兼容此问题

  • 2、http请求方式:Get 

  • 3、cookie:无需处理 cookie留空

  • 4、签名:无需处理,ArgCount设置为0

  • 5、参数:有3个参数 

注意:CaseID和Excel表的sheet命名要满足java命名规范,且CaseID不能重复

最终用例Excel内容如下图:保存Excel--> Demo测试用例.xlsx



二、创建maven项目

1、打开eclipse,选择新建-项目-Maven--Maven Project

2、选择项目保存磁盘目录,或使用默认项

3、在【Select an Archetype】时,选择“Maven-archetype-quickstart”如下图,之后点击下一步



4、Group Id和Aritifact Id自定义输入,此实例中输入:

Group Id:cn.baiweigang.test

Aritifact Id:DemoWeiXinAPI

点击【完成】后,maven项目创建完毕,其项目代码结构如下图:




三、项目添加类文件

1、修改pom.xml文件,加入QTAF框架依赖,可把默认的junit依赖删掉,最终依赖部分配置如下:

1
2
3
4
5
6
7
8
9
< dependencies >
   < dependency >
       < groupId >cn.baiweigang</ groupId >
       < artifactId >qtaf</ artifactId >
       < version >1.2.0</ version >
       < type >jar</ type >
       < scope >compile</ scope >
   </ dependency >
</ dependencies >

2、删除掉源码下的test,只保留main即可;删除掉默认的App类

3、拷贝第一步中创建到Excel测试用例文件【Demo测试用例.xlsx】到项目根目录,此步可选,在最后指定用例时,可通过测试用例文件的绝对路径定位,是否拷贝到项目无影响

4、创建WeiXinAPIConf类,参照Example项目DemoConf类的内容,此处只填写Get参数即可,如下:

1
2
3
4
5
6
7
8
9
10
11
12
package  cn.baiweigang.test.DemoWeiXinAPI;
 
/**
  * @author @<a href='http://weibo.com/bwgang'>bwgang</a><br/>
  *
  */
public  class  WeiXinAPIConf {
     public  static  final  String[]  HeardPara ={};
     public  static  final  String[] GetPara = { "grant_type" , "appid" , "secret" };
     public  static  final  String[] PostPara = {};
     public  static  final  String ENCODING= "UTF-8" ;
}

5、创建WeiXinAPICasesUtils类,要继承自LEO框架中的CasesUtils类,参照Example项目DemoCasesUtils类的内容,创建方法Demo,代码如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
  * @author @<a href='http://weibo.com/bwgang'>bwgang</a><br/>
  *
  */
public  class  WeiXinAPICasesUtils  extends  CasesUtils{
     public  IFtResultInfo Demo(IftTestCase testcase)  {
         //设置用例编码--可选
         testcase.setEnCoding(WeiXinAPIConf.ENCODING);
 
         //更新用例的签名计算、url参数、form参数、header参数--必须
         testcase=updateAllToListForCase(testcase, WeiXinAPIConf.GetPara, WeiXinAPIConf.PostPara, WeiXinAPIConf.HeardPara);
 
         //更新用例参数值,针对rand等特殊标识处理--必须
         testcase=updateAllParaForCase(testcase, 10 );
         //发起请求
         ResponseInfo resInfo = execResquest(testcase);
 
         //预期结果格式为key1=value1&key2=value2  或key1=value11#value12&key2=value2 支持一个可以对应多个值
         String expRes=testcase.getCaseMap().get( "Expres" );
         if  (expRes== ""  ||  null ==expRes) {
             expRes= "预期结果为空" ;
         }
         //获取处理后的实际结果 目前只支持json\xml格式  如果接口返回结果不是此两种格式 则需要把actRes转换为json或xml格式
         String actRes= resInfo.getResBodyInfo();
         //预期值与实际值比对 并返回IFtResultInfo类型
         return  getIFtResultInfo(resInfo, expRes, actRes);
     }
 
}

6、创建执行入口类Entry,参照Example项目Entry类的内容,代码如下:

其中 iftExec.addCase(IftConf.RootPath + "Demo测试用例.xlsx", "获取access_token", "获取access_token接口", WeiXinAPICasesUtils.class, "Demo");
表示添加一个测试,可以添加多个


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
  * @author @<a href='http://weibo.com/bwgang'>bwgang</a><br/>
  *
  */
public  class  Entry {
 
     /**
      * @param args
      */
     public  static  void  main(String[] args) {
         // 依赖的jar文件路径信息 必须设置 以maven方式运行一次后会记录本地库jar文件位置
         if  (!IftConf.updateJarFile(args))
             return ;
         // 添加用例
         IftExec iftExec =  new  IftExec();
         /**
          * casePath 用例路径 必填 sheetName Excel的sheet表名 可选 caseName 用例名称 必填 cls
          * 执行用例的类 必填 method 类中的方法 必填
          */
         iftExec.addCase(IftConf.RootPath +  "Demo测试用例.xlsx" "获取access_token" ,
                 "获取access_token接口" , WeiXinAPICasesUtils. class "Demo" );
         // 执行
         TestReport report = iftExec.run();
         // 输出执行结果
         System.out.print( "任务执行结果:"  + report.getResMsg() +  "\n" );
         if  (report.getResNo() > - 1 ) {
             System.out.print( "任务名称:"  + report.getTaskName() +  "\n" );
             System.out.print( "任务执行时间:"  + report.getSumTime() +  "毫秒\n" );
             System.out.print( "Html报告:"  + report.getHtmlReport()
                     "/index.html\n" );
             System.out.print( "Excel报告:"  + iftExec.getExcelReportPath());
         }
     }
 
}


四、运行配置

至此项目初步创建完毕,执行入口类Entry,此类就是个main函数,第一次直接执行此类时,不会执行用例的,会提示【在eclipse中,第一次需要以maven方式执行】

需要在pom文件中配置的  

1
2
< name >DemoWeiXinAPI</ name >
< url >http://maven.apache.org</ url >

此部分后面添加,目的是指定maven方式运行时执行的类以及构建编码等,

注意 :

1
2
3
<java classname="cn.baiweigang.test.DemoWeiXinAPI.Entry" classpath="$
 
{runtime_classpath}"

此部分内容中执行类修改为实际的。

添加的部分xml如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
< build >
         < plugins >
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-compiler-plugin</ artifactId >
                 < configuration >
                     < source >7</ source >
                     < target >7</ target >
                     < encoding >UTF-8</ encoding >
                     < file.encoding >UTF-8</ file.encoding >
                 </ configuration >
             </ plugin >
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-surefire-plugin</ artifactId >
                 < configuration >
                     < argLine > -Dfile.encoding=UTF-8</ argLine >
                     < forkMode >once</ forkMode >
                 </ configuration >
             </ plugin >
 
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-antrun-plugin</ artifactId >
                 < executions >
                     < execution >
                         < id >test</ id >
                         < phase >test</ phase >
                         < configuration >
                             < tasks >
                                 < property  name = "runtime_classpath"  refid = "maven.runtime.classpath"  />
                                 < java  classname = "cn.baiweigang.test.DemoWeiXinAPI.Entry"  classpath = "${runtime_classpath}"
                                     fork = "true"  maxmemory = "256m" >
                                     < sysproperty  key = "file.encoding"  value = "UTF-8"  />
                                     < arg  value = "${runtime_classpath}"  />
                                 </ java >
                             </ tasks >
                         </ configuration >
                         < goals >
                             < goal >run</ goal >
                         </ goals >
                     </ execution >
 
                 </ executions >
             </ plugin >
 
         </ plugins >
     </ build >


然后在项目名称上右键--“运行方式--”Maven test“,控制台输出如下信息表示执行成功。

之后可以通过直接运行Entry类来调试或执行用例了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[INFO] Executing tasks
      [java] [TestNG] Running:
      [java]   E:\workspace_ee\DemoWeiXinAPI\qtaf\dispatch\suites\接口测试.xml
      [java]
      [java]
      [java] ===============================================
      [java] 接口测试
      [java] Total tests run: 1, Failures: 1, Skips: 0
      [java] ===============================================
      [java]
      [java] 任务执行结果:任务执行成功
      [java] 任务名称:接口测试
      [java] 任务执行时间:3724毫秒
      [java] Html报告:E: /workspace_ee/DemoWeiXinAPI/qtaf/ift/report/ 接口测试 /html/index .html
      [java] Excel报告:E: /workspace_ee/DemoWeiXinAPI/qtaf/ift/report/ 接口测试/测试报告_Demo测试用例.xlsx
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total  time : 18.034s
[INFO] Finished at: Wed Feb 26 18:10:35 CST 2014
[INFO] Final Memory: 7M /17M
[INFO] ------------------------------------------------------------------------

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值