接口测试 一个基于 python3 的接口自动化测试框架

浪晋 · 2017年04月06日 · 最后由 Rachel111 回复于 2019年04月14日 · 6262 次阅读

一、为什么开发这个框架
随着公司接口的增多,开发一边开发,测试一边测试,导致了接口的不稳定。为了去验证接口是否正常,耗费了越来越多的人力,而且大量的都是重复的工作。
为了减轻测试的压力,所以开发了这个轻量级的接口自动化测试框架。
二、自动化测试框架介绍。
a) 基于 python 脚本编写,不需要借助其他工具,环境配置简单。
b) 采用数据驱动测试的方式,后期仅仅只需要维护一个测试数据的 EXCLE 表格。
c) 测试用例可以分模块编写,方便对用例的管理维护。
d) 测试用例和测试执行分离,实现执行测试时用例可以任意配置。
e) 实现多线程执行,可以同时运行多个测试集。
f) 测试结束后直接生成 EXCLE 报告,统计测试执行情况,执行情况详细,能够快速定位问题,并且容易扩展优化。
三、框架流程说明

图用 word 画,相当丑。
1、测试数据
在 testdata.xls 表格中编写每一条测试用例的测试数据。
注意:目前代码版本不支持.xlsx 格式的表格。
有些同学喜欢 XML 的,也可以把这一部分给替换掉,实现上,没多大区别。

2、自动获取 token
获取初始 token,并自动写入 testdata 中。

3、自动写入 token 到测试数据中
获取到的 token 写到 testdata 中,方便其他测试用例调用,保证每次都是调用的最新的 token。

4、查询数据库获取对应的数据,同理 token,写入表格

5、编写测试用例

6、构建测试集

7、添加多线程执行

8、执行并输出测试报告。

9、测试报告


【PS.这一块的代码是网上找来改的,不是自己写的。就改了些参数传递之类的。】

四、需要的库

其中一部分需要,懒得去弄了。

五、持续集成
集成 jenkins,我还没去弄,不过不难。手动微笑。
六、一些废话
https://github.com/fenyukuang/FreeTestGo
代码自取。
值得优化的地方还有很多。
希望和大家共同进步。

共收到 30 条回复 时间 点赞

这个 excel report 怎么感觉好像看过

如果接口参数有几十个怎么弄,excel 不搞死了

浪晋 #28 · 2017年04月06日 Author
Unmurphy 回复

测试报告那一块不是自己写的,网上找到的,觉得好看,就拿来用了。
主要就修改了把测试的结果传过去。
来源:http://www.jianshu.com/p/6c5d328bf390

浪晋 #18 · 2017年04月06日 Author
kanchi240 回复

哈哈哈,是有这个问题。
还在想办法把更多公共的东西单独的封装出来。

你这个缩进,看着好难受。。。。😂

浪晋 #13 · 2017年04月06日 Author
淳罡 回复

😬 第一次发帖,对排版不熟练。见谅

先马后看,另外,少年注意格式

剪烛 回复

😅 😅 😅
下不为例,认真学习格式排版。

测试报告可以用 @ycwdaaaa 介绍的 allure 正好在 jenkins 中有插件。

厉害了,少年~学习下~

浪晋 #24 · 2017年04月07日 Author
徐旻 回复

看了下,感觉确实很漂亮的样子,研究下,看能不能集成过来。😅

浪晋 #25 · 2017年04月07日 Author
e4rljia 回复

共同进步。

浪晋 回复

还是挺简单的。 不过要用 pytest 测试框架 , 不过 pytest 的测试框架 兼容 unittest 的。所以我觉得还是很简单的。

这个框架跟我有点像,哈哈

浪晋 #26 · 2017年04月07日 Author

哈哈哈,缘分啊。
我还在修改,今天把结构目录之类的调整了。
重新封装了两个方法。

浪晋 回复

我想跑起来,需要改哪些呢

浪晋 #28 · 2017年04月12日 Author
回复

主要是改 testcass 里的内容。
毕竟需要根据你测试的接口来写。
你可以去把代码拉下来,然后照着建一个项目。
注释我写的还是比较清楚的,不清楚的,你可以加我。

浪晋 回复

联系方式多少,qq

这个 github 地址跪了

git 地址跪了

地址跪了,求再给

git 地址不能访问,求地址

不能访问了

给了我很大的启发不过有两个地方可以优化一下 :第一个是地址你这里都是使用的绝对路径一旦更换位置就要重新改代码有一点麻烦;第二个是如果是多角色怎么办,我现在测试的系统就是多角色系统,每个角色的功能不一样

哦对了 还有一个问题 post() 方法中可以直接使用 requests.post(url,json =dic_json) 请求 其中 dic_json 是字典 requests 库会自行将字典转化成 json 不用 dumps() 的

浪晋 回复

源代码地址可以重新发一次吗?原来的失效啦😂

仅楼主可见
匿名 #3 · 2019年04月10日

git 跪了···················

GIT 不行啊,求教怎么集成到 JENKINS 上。

徐旻 回复

求教 Jenkins 集成

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册