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

来源:互联网 发布:ubuntu配置ssh 编辑:程序博客网 时间:2024/05/23 02:18

前提:

  • 本地的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] ------------------------------------------------------------------------

0 0
原创粉丝点击