接口测试 WeTest 接口自动化测试框架

胡刚 · 2015年10月28日 · 最后由 hcj 回复于 2018年08月03日 · 5078 次阅读
本帖已被设为精华帖!

一.简介

WeTest是处理API接口测试的轻量级自动化测试框架,java语言实现,拓展JUnit4开源框架,支持Ant/Maven执行方式。

工具特点:

1.支持suite,根据JUnit4测试类名正则匹配,聚合相同模块的用例,运行单个聚合类即可实现运行一个模块所有的用例;
2.支持测试类和方法级别用例并发执行,缩短执行时间(用例间需线程安全);
3.支持失败重试,包括执行中(@Retry注解)和结果跑完(根据Ant/Maven失败日志,扫失败日志,JUnitCore跑失败用例,多线程执行); 
4.邮件通知结果。

框架图:

这里写图片描述

二. 开发环境

Java IDE,JDK6以上,JUnit4,Mysql,Ant/maven, Svn。

三.项目结构

1.包com.weibo.cases.hugang,可以新建多个以模块或者以人的维度管理的用例集,测试用例放在该包下。
2.包com.weibo.cases.suite,聚合相同模块测试用例的聚合类。
3.包com.weibo.common,封装不同接口为特定方法。
5.包com.weibo.global,接口http请求(get或post),HttpClient实现;http请求返回的String反序列化成Javabean对象,Jackson实现。
6.包com.weibo.model, 接口返回的结果对应的Javabean类。
7.包com.weibo.runfail, 用例结束后,重跑失败用例。
8.包com.weibo.runner, 自定义的runner, @Retry(运行中重试),@ThreadRunner(单个类并发),@ConcurrentSuite(Suite类和方法级别)等。
9.包com.weibo.userpool, 用例中申请测试账号,JDBC实现。

配置文件:
c3p0.properties 用户池数据库连接池配置, mysql地址,账号,密码;连接池最大,最小连接数。
global.properties 测试环境设置,ip, port, appkey, retry默认设置。

四.调度方式

以shell脚本进行调度,根据不同模块,执行对应的build.xml;
在build_***.xml中指定测试模块,shell脚本会根据你的选择,ant执行不同的xml,达到运行某个模块的功能。 

二期已经使用Taobao toast自动化测试框架二次开发,前端调度。   

五.测试用例填写规范

1.每个用例使用
try{
用例;
TestLogComment("用例描述");
}catch(Exception e){
fail("用例信息");
}finally{
清关系等;
}
结构;catch()能捕获非assertThat失败,如接口跑异常; finally里清try语句块构建的关系等;
2.每个用例之间不能有任何依赖,都是单独的;
3.每个测试Class名,后缀应该跟该相应模块相关,主要为聚合某一类功能,正则匹配用。

六. 使用方法

团队成员,可以将自己添加的 case 上传到 SVN 上,协同工作。单个 case 可以直接在 eclipse 上运行。
对于自动化回归测试时,可以根据不同模块,执行对应的 build.xml。

1 运行 shell 脚本,运行不同模块用例。

这里写图片描述

2 邮件推送运行结果,并将本次运行的失败日志作为附件发送,将失败日志放到 com.weibo.runfail 下,运行 RunFailedCases.java 重试。

这里写图片描述
这里写图片描述

七.WeTest Features

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

八. 流程图

1. 用例执行流程

这里写图片描述

2.用户池获取用户

这里写图片描述

3.接口调用流程

这里写图片描述

4.调度脚本流程

这里写图片描述

5.初始化流程

这里写图片描述

相关内容介绍:

JUnit 结果重跑失败用例(支持 Mvn 和 Ant)

JUnit4 多线程执行测试用例

github 开源地址:

https://github.com/neven7/WeTest

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 25 条回复 时间 点赞

想请教楼主实现的重跑、并发和 test NG 自带的效果比,有什么优点呢?

仅楼主可见

看到 we 开头,瞬间以为是 TX 出品~

果断收藏!

先收藏,刚好需要 感谢。。

很赞!

#3 楼 @anikikun http://wetest.qq.com/ 还以为跟这个一样的,看错,我错了。。。面壁一下

写的不错. 是你写的吗, 如果不是记得贴上人家的链接.

#8 楼 @seveniruby 是他的写的。

#9 楼 @lihuazhang 我看截图貌似是转载的. 那不错. 社区又来一猛将

感谢分享,就是没有注释好痛苦

赞,已收

匿名 #13 · 2015年11月05日

源码中 UserPool 类中引用的 import com.weibo.common.Utils 找不到,是不是啊

胡刚 #14 · 2015年11月05日 Author

#13 楼 @huadashao520 不影响功能,只是一些工具方法,有些方法不方便公开。

果断赞一个

匿名 #18 · 2015年11月06日

#14 楼 @neven7 恩 是我少见多怪了

@neven7 请问,调度的 shell 脚本在哪呀,我在项目里没有看到呀,多谢!

胡刚 #19 · 2016年06月09日 Author

#18 楼 @xdlhy shell 脚本还没公开,其实也比较简单,你按照文章中 “5.初始化流程” 流程图,自己就可以写出来。

陈恒捷 [该话题已被删除] 中提及了此贴 08月21日 01:50

先收藏,楼主写的真的很好。求楼主推荐好用的自动化测试工具~脚本维护 QTP 和无需编码的 TestWriter 以及接触过一点 Selenium~还有别的吗~

我可以联系你么(微信,QQ 都可以)?我想咨询一下

真好, 轻量级的实现方案, 最适合学习了, 如果稍微修改一下, 有可运行的示例, 那就更加锦上添花了, 会促使更多的人在 Github 上 star, 吸引来更多的人关注和学习

陈恒捷 接口测试的一些感悟 中提及了此贴 12月13日 10:29

犀利,刚还想了解下 自定义注解 @Concurrent 的实现

恒温 感谢 fir.im —— 结果公布 中提及了此贴 06月05日 13:20
20楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册