自动化工具 开源啦~接口自动化测试平台

yuan · 2018年07月05日 · 最后由 blues_mli 回复于 2020年06月17日 · 14474 次阅读

序言

对于接口自动化这方面断断续续也研究了好久了,从最开始自己写小框架 +excel 数据来驱动;然后到基于 flask 前后端结合在一起弄平台,最后到现在的前后端分离开发出的这平台,感触颇深啊,额额额,开源啦,代码写得糟糕,有问题啊、优化啊、建议啊、等等希望能指点指点,qq:362508572 ~~~

基本结构

前端:js vue element-ui

github 地址:https://github.com/pencil1/ApiTestWeb

后端:python flask httprunner

github 地址: https://github.com/pencil1/ApiTestManage

粗略的页面介绍

首先,因为是基于九毫大神开源的 httprunner 接口自动化框架,里面一些编写规则就不详细介绍了

登录页面

这个就不详细说了,登录就那样子了呀

项目页面

包含:

  • 基础信息

里面的基础 url 可填入多个,因为目前的公司项目有可能一个业务下来牵扯到几个 base_url,这个 base_url 到时和是接口 url 拼接起来组合成一个完整的请求

  • 公用变量

这个就是定义一个项目下,通用的变量了

  • 公用请求头部

这个就是定义一个项目下,通用的请求头部了

下面请看截图介绍



模块页面

这个比较简单,就是定义项目下的模块,感觉起到一种中介的作用,让接口信息按一定分类定义下来(模块下才可创建接口信息)

接口信息页面

填写规则基本就是按照 httprunner 来了,文件传输就区分 json 格式和 data 格式的,再加个支持文件传输
该业务支持同时勾选多个接口信息来调试,方便与后续业务集的便利添加不用重复调试





配置页面

可单独添加一些不同的配置信息,就拿公用变量哪里说明吧,主要是为了后面的业务集快捷添加配置,可导入在后续介绍中的函数文件来实现自定义的一些函数功能


业务页面

先说明一下一个业务里面两个 tab,业务集合和接口用例的关系,接口用例就是搜索出相关的接口信息出来,然后勾选后点击添加,就把接口信息添加到业务集合里面去,一个接口信息支持多次添加从而组成一个业务集合,业务集合那里,点击配置后,可二次修改接口信息的一些相关内容,并设置 hock 函数和该用例的名称

然后业务变量,可快速添加在配置文件中的配置,添加完之后可二次修改内容




内置函数页面

可自行创建属于自己的 py 文件,写入属于自己的业务函数,方便自己负责的项目的接口信息的调用等等

测试报告页面

按上述的描述,会已最小单元为业务集进行回归测试,并同时生成报告

定时任务页面

可添加定时任务,周期性的和一次性的也可以添加

目前先写到这里,之后的开源需要慢慢整理一下,截图颇多,感觉大家能看到这里

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

vue element-ui,天下人共爱之😂

开源么?😀

yuan #3 · 2018年07月06日 Author
debugtalk 回复

嗯,开源,不过需要整理一下才行

不赖,能分享下?

yuan #57 · 2018年07月06日 Author
测试小白 回复

会的,不过需要点时间整理一下

现在可以用吗?

学习一下

学习学习

开源吧 放出来

仅楼主可见
yuan #11 · 2018年07月06日 Author
回复

这个本来打算弄的,然后想了一下,好像没必要去弄

yuan 关闭了讨论 07月06日 17:41
yuan 重新开启了讨论 07月06日 17:41

excel 是用来干啥子的?excel 如果用来管理测试数据的时候,多个人一起写用例,合并代码的时候,会不会原地爆炸....

yuan #15 · 2018年07月09日 Author
韩将 回复

可能以前用到 xlrd 这些库,现在没用了,忘了删掉~~

yuan 回复

sql 能加不

yuan #17 · 2018年07月09日 Author
letme 回复

数据存储是用 sqlite,你说的 sql 指的是?

yuan 回复

调用开发的数据库

yuan #19 · 2018年07月09日 Author
letme 回复

调用开发的数据库目的是断言接口是否正确?断言支持函数,可以自己编写函数去连接数据库获取信息来判断

yuan 回复

我传参可能会选择开发数据库查询出来的数据作为参数值,这样保证我的值是动态的;就算数据更改了,对于我的接口来说其实是没有变化的,不然数据一变,你的参数就要重新设置一次。或者我可能会去直接操作数据库,去创建一些数据,达到接口测试前置的目的,或者接口测试后对数据进行复原。

yuan #21 · 2018年07月09日 Author
letme 回复

你可以详细看看 httprunner 开源库,参数的值也可以引用函数来动态改变~~应该是可以符合你的要求的

接口测试平台主要是辅助我们测试使用,而不是为了自动化测试研发接口测试平台!
说几个测试过程中可能遇到的问题:
1、form 表单存在编码,编码格式是 GBK;
2、字段是 gzip 压缩的 json 字符串,业务流程测试过程中 json 是动态变化的;
3、加密与签名是否支持?
4、流程测试流程中数据库检查点是否支持?
5、是否支持公司内部 Java rpc 调用(如阿里 dubbo)?
6、能帮助开发自测吗?

yuan #23 · 2018年07月10日 Author
乾行 回复

针对你说的问题(因为后端是基于 httprunner 来接口测试的,功能也大部分实现,就那现成 httprunner 作者的话题来解答):
1、编码格式的话,https://testerhome.com/topics/13523hock 函数,在请求发送前对表单进行编码转换,我觉得可以用
2、json 字符串里面也是可以引用参数或者函数的
3、https://testerhome.com/topics/9389,加密和签名,也就是函数的引用可解决
4、流程测试时的数据库检查点,可以参考 httprunner 最后的判断机制(也支持自定义判断函数),或者在 hock 函数中,用例执行后调用函数读取数据库判断
5、rpc 这个好吧,不太懂,不过我的理解是,现在这个平台前端后端都是通过接口来交互的,所以也可以放弃前端,直接发协议的形式去启动服务器跑用例等等
6、这个就~~看情况吧

多谢楼主,最近想写 java 版的页面测试工具

yuan 回复

问题 1、2、3 都是可以解决的,但都是需要对工具进行二次开发才能实现。
问题 4 使用 hock 可以解决问题,但是为何不把数据库相关的操作也看作接口呢?

建议将协议、接口参数、断言分离,协议可以是对 mysql、http(s)、dubbo、mq、redis、mongo 等公共组件操作的封装。

yuan #27 · 2018年07月10日 Author
乾行 回复

你说的这些公共组件操作,感觉每个公司都有不一样的需求,如果自己需要要自己封装符合业务的呀~~

仅楼主可见
yuan · #29 · 2018年07月11日 Author
仅楼主可见
yueyawan 回复

我最近也在思考如何搭建框架呢,也打算用 java,到时候一起沟通哦

有木有根据 json-schema 自动生成测试脚本的

支持下

yuan #33 · 2018年07月25日 Author
SD守道 回复

😀

仅楼主可见
yuan #35 · 2018年07月31日 Author
gylinchunsheng 回复

可以

老兄,可不可以测 DUBBO?可以测的话,你就牛逼了

yuan #37 · 2018年08月01日 Author
测试的 回复

目前应该是不行的😅

yuan 自动化平台部署篇 中提及了此贴 08月03日 17:06

大佬 可不可以告诉下 你的测试报告页面前端是怎么做的 我也想写一个这样的页面,但是不知道怎么写啊

yuan #40 · 2018年10月23日 Author
围城 回复

不是已经放了 github 地址么?直接看代码就好了呀

仅楼主可见
yuan #42 · 2018年11月21日 Author
南修 回复

加个好友详细说说,不然我也不怎么清楚问题

厉害厉害

45楼 已删除

谢谢楼主分享,学习学习

我想问一下楼主,通过接口请求进行自动化测试,覆盖率这一块有考虑接入吗?有什么思路吗?

yuan #48 · 2019年06月27日 Author
xin93 回复

覆盖率这块没研究过~~

49楼 已删除

接口模块现在没有啦?

yuan #51 · 2019年08月13日 Author
1weifang 回复

接口信息页面,左边那一列就是模块了,等于把模块和接口信息合并了

哈哈,居然在这里看到了你,我也正在写一个这样的功能

您好,我最近准备构思接口自动化交互,现在的问题就是,一个接口可以有多个用例,一个业务有多个接口组成。 我看你是在业务里面区分,业务和 用例。现在我有两个问题
1、如果一个接口有多个用例,在用例就需要做相同接口但是参数和断言不同 这里只需要修改参数和断言就可以以了,可以看下你的交互么
2、在测试任务里面,如果我有业务和用例,怎么统计通过的数据,因为一个业务只能算一个用例,但是一个接口多个用例应该算多个用例

yuan #54 · 2019年12月16日 Author
兔子 回复

你可以上线上的 demo 去操作看看,里面的一些逻辑吧

这个平台有什么作用 postman 不香么 多接口使用代码写不好么 看不出平台有什么价值

yuan #56 · 2020年06月10日 Author
gaopan1 回复

有没有作用就见仁见智了,适合自己公司的就是有作用的,不适合的,什么东西都不香

yuan 回复

好多公司现在招聘测试开发就是搞这种平台 然后再找一些测试人员在这些平台上测试 对于这些测试人员 一旦使用这种平台后 基本上很少接触到代码 框架的东西 对自己的职业发展不是太好 感觉还是直接撸代码 来搞定测试比较好

yuan #58 · 2020年06月12日 Author
gaopan1 回复

有梦想的测试,会参与到平台的建设中,会在代码中提出优化意见;没有梦想的测试,要么在平台中点点点,要么在代码中按照设定好的规则写写写,本质上区别不大

yuan 回复

还真没看出来做个平台有啥梦想 就你这平台基本上真正做测试开发的都能搞定

yuan #2 · 2020年06月12日 Author
gaopan1 回复

首先,我没有说我的平台很牛逼,其次,我和你说无论公司是使用平台工具、还是手撕代码,都有提高自己的途径

现在的一些自己写的平台主要是用于提升自己的技术吧

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