引言
最近刚学完python,想着怎么练一下手,就选择了写api自动化测试。写api自动化测试前需要考虑的内容有一下几点:
- 使用什么编程语言
- 使用什么api测试框架/工具
- testRunner用什么
- 测试用例是否可以灵活组织、运行
- 测试结果如何展示
文章目录
工具介绍
鉴于以上几点考虑,选择了Python+Requests+Pytest+Pytest-html,先介绍一下这些工具,python就不用介绍了。
Requests
requests是python的一个第三方库,用于发送和处理http请求,其语法和操作都十分简单,官方文档也很详细,生态也比较完整,很多问题在网上都可以搜索到解决办法。
Pytest
Pytest是python的一个第三方库,需要单独下载安装。那么有人肯定会或为什么不直接用python内置的unittest库呢?可以参考unittest和pytest的区别。
Pytest-html
Pytest-html是一个专门用于pytest生成html测试报告的插件,该插件很轻量级,报告展示也清晰易懂。
前期准备
安装python
python官网写得很详细,就不赘述了。
mock api
为了方便测试各种类型的接口,这里使用wiremock写了一些mock api,之后的例子全都基于这些mock api。可以直接下载源码使用:https://github.com/qycai/wireMock.git。下载之后直接运行App.java即启动了mockServer,可以使用postman测试一下,如下图:
接口返回200说明mockServer启动成功。
测试用例编写
第一个简单的接口测试
安装requests&pytest
pip install requests
pip install pytest
编写测试
新建python文件test_get_user_details.py, 内容实现如下:
import requests
base_url = "http://localhost:9090"
#class名需要以Test开头
class TestGetUserDetails:
#测试名需要以test开头
def test_get_user_details(self):
api_path = "/api/getUserDetails"
res = requests.get(url=base_url + api_path)
response = res.json()
status_code = res.status_code
assert status_code == 200
assert response["name"