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依赖删掉,最终依赖部分配置如下:
<
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参数即可,如下:
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,代码如下:
/**
* @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");
表示添加一个测试,可以添加多个
/**
* @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文件中配置的
在
<
name
>DemoWeiXinAPI</
name
>
<
url
>http://maven.apache.org</
url
>
此部分后面添加,目的是指定maven方式运行时执行的类以及构建编码等,
注意 :
<java classname="cn.baiweigang.test.DemoWeiXinAPI.Entry" classpath="$
{runtime_classpath}"
此部分内容中执行类修改为实际的。
添加的部分xml如下:
<
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类来调试或执行用例了
[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] ------------------------------------------------------------------------
- QTAF接口自动化框架–从零开始构建接口测试(三)
- 接口自动化测试框架
- 接口自动化测试框架
- python 接口自动化测试(三)
- ITF接口自动化测试框架
- ITF接口自动化测试框架
- 接口测试自动化生成框架
- 接口测试自动化生成框架
- 接口测试自动化生成框架
- 接口自动化测试框架设计
- WeTest 接口自动化测试框架
- 接口测试自动化生成框架
- 接口测试自动化生成框架
- (JAVA+TESTNG 三)Eclipse+TestNG搭建接口自动化测试框架
- 接口自动化测试框架 (一) :APIAutoTest框架
- 接口自动化测试框架 (一) :APIAutoTest框架
- WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)
- 接口自动化测试TestNG框架环境搭建 (1)
- cocos2d-x源码分析-CCScheduler
- Android(java方法)上实现mp4的分割和拼接 (二)
- PAT_1055 world richest 多键排序
- 汉诺塔递归演示
- 平均值考虑溢出的问题
- QTAF接口自动化框架–从零开始构建接口测试(三)
- 【marks】Unity3D
- casio计算器fx82es刷机实现十进制转其他进制的模式
- cocos2d-x 框架深入分析 - MainLoop
- 十大新兴云操作系统
- hdu 2114 Calculate S(n)(找规律的题目,比赛的时候没做出来)
- 修复二叉查找树 Recover Binary Search Tree
- Unity3d中使用Lua
- java封装类(二)