接口测试—-工具篇,实现接口自动化
来源:互联网 发布:java开发在公司任务 编辑:程序博客网 时间:2024/05/22 02:03
接口测试—-工具篇,实现接口自动化
今天来看下接口测试的两个工具方式,目前主流的做法有两种方式—-基于代码框架的用例编写和直接使用接口测试工具,那么本篇就这两种方式都来实现一下,为了说明情况,我们实现上一篇的前两个用例:直接请求readnotes接口数据和带上登录信息请求readnotes数据。
工具:使用的是jmeter
代码:使用的是python的unittest + requests + htmlreportrunner方式(https://github.com/CloudHuan/pyapitest)
jmeter
首先看jmeter的实现方式:
首先创建线程组,然后在线程组添加http取样器,每一个取样器就是一条用例。
打开,配置url和相对应的参数。
请求完成之后针对结果做断言
最终的目录结构和自带的报告如下:
那么可以看到,jmeter入手非常快,然后校验的也比较简单,主要是针对返回码、返回内容进行校验。
代码
利用了requests库去负责请求响应,利用unitest做结果判断,利用htmlreportrunner生成报告。
项目的结构如下:
Reports目录是生成报告的存储目录
Testcases存放测试用例
Testtools是测试相关的封装,比如里面我疯撞了pymysql的调用
点击run.py执行运行并自动生成报告。
直接跳到测试用例看下实现的用例代码:
import unittestfrom wsgiref import headersimport requestsimport refrom testtools.MySQLHelper import SqlHelperclass readnote(unittest.TestCase): mUrl = 'http://127.0.0.1:8000/note/readnotes'; def setUp(self): pass def tearDown(self): pass def test_readnote_null(self): '''所有参数为空''' resp = requests.get(self.mUrl).json(); self.assertTrue(resp['code'] == 0); self.assertTrue(resp['data'] != []); r = SqlHelper().query('SELECT * FROM account_note WHERE public=1'); self.assertTrue(len(r) == len(resp['data'])); def test_readnote_only_token(self): '''只填写token,获取自己的列表''' resp = requests.get(self.mUrl,headers={'TOKEN':'1'}).json(); self.assertTrue(resp['code'] == 0); self.assertTrue(resp['data'] != []); r = SqlHelper().query("SELECT * FROM account_user a JOIN account_note b ON a.uid = b.uuid WHERE TOKEN='1'"); self.assertTrue(len(r) == len(resp['data'])); def test_readnote_only_uid(self): '''只填写uid,获取用户列表''' pass def test_readnote_all(self): '''参数都填写''' pass def test_readnote_invalidataUID(self): '''uid不存在''' pass def test_readnote_invalidataToken(self): '''token不存在''' pass def test_readnote_no_content(self): '''新注册用户,无内容返回''' pass
通过request请求获取数据后,解析json数据,首先判断code和data,然后解析data看下具体业务返回得对不对,作为断言的判断,是根据sql查询数据库的数据对比得到的。后面的断言,jmeter要实现起来会比较繁琐,更别说维护了。
区别和选择
那么工具和代码实现,各有各的优势。
使用工具,你可以很快速的上手,学习成本比较低,很多都是现成的。同时工具往往还提供额外的功能,比如jmeter我除了用来接口自动化集成,同时也用来压测部分重要接口,缺点非常明显啦,局限性会比较大,要实现一些复杂的功能需要通过自己定制的插件实现,既然都要写代码,为何不直接用代码来验证呢?
那么使用自己编写的框架,最大的好处是灵活,更容易针对项目定制化,虽然前期投入会比较大,但是一旦完善了那么会显得非常好用,可以完成一些工具无法完成的事情,比如接口加密,环境切换,用例维护管理等等,基于这个原因,很多有一定规模的项目肯定都是采用后者的。
- 接口测试—-工具篇,实现接口自动化
- 轻量级接口自动化测试工具
- 接口测试工具实现
- 【接口自动化测试】使用Fitness实现接口自动化测试
- 【接口测试】接口自动化测试
- 如何简单实现接口自动化测试—基于 python
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- 利用fitnesse实现api接口自动化测试
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- http接口自动化测试框架实现
- 利用fitnesse实现api接口自动化测试
- 高德地图api的自定义地点标注
- 2107-图的深度遍历
- 将tomcat注册为服务
- 用户画像的入门(转自CDC)
- hdu 1686 Oulipo (KMP裸题)
- 接口测试—-工具篇,实现接口自动化
- K
- 照片墙
- hdu 6096 String
- AdapterViewFlipper 自动播放图片(幻灯片效果)
- cannot import name filter
- 17多校contest 6- 1003 Inversion ( 模拟
- 爬虫
- Package gitlab-ce-9.4.3-ce.0.el6.x86_64.rpm is not signed