赞
踩
今天为大家带来的是如何使用Python实现接口测试, 相信很多小伙伴在日常的工作中都在进行这方面的测试工作. 一起来看看有没有特殊的花招,能够提升我们的工作效率呢。
市场主流测试常用python库: requests, urllib3, mock, grequests, httprunner, robotframework等
我们以requests为例进行案例讲解。
session会话管理对象能够帮助我们处理缓存和cookie信息, 从而减少冗余的操作.
借助与session对象, 发起get、post请求.
session会话管理对象
session = requests.session()
登录接口
url = 'http://127.0.0.1:8088/login'
payload = {"username": "qftest", "password": "test123456"}
resp = session.post(url, data=payload)
print(resp.text)
{"code": 1, "message": "贺喜你,登录成功"}
print(resp.json())
{'code': 1, 'message': '贺喜你,登录成功'}
url: 接口URL请求地址
payload: 请求参数
resp: 响应
resp.text 响应的文本数据
resp.json() 响应的json数据
resp.status_code http协议状态码
注销登录
url = 'http://127.0.0.1:8088/logout'
resp = session.get(url)
print(resp.text)
{'code': 1, 'message': '退出成功'}
上传头像
url = 'http://127.0.0.1:8088/user/avatar'
构造上传文件数据
file = {"file": open('head.jpg', 'rb')}
resp = session.post(url, files=file)
print(resp.json())
{'code': 1, 'message': '个性头像设置成功'}
files: 用于接收上传的文件(使用open()打开读取)
关联数据:
前一个接口的返回值是后续接口的入参必填数据
当前接口的请求头或后续断言中需要使用之前接口的请求头或响应中的文本作为参照
关联数据的处理:
先将从想用中获取到的数据保存到一个 字典(dict)中 -- 关联数据字典
relations = {}
relations["id"] = resp.json().get("userid")
relations["pay_pwd"] = resp.json().get("pay_pwd")
再使用到关联数据时, 从之前保存数据的 关联数据字典中 通过传入key获取到数据
id = relations.get("userid") # 获取字典中指定key的value
def assert_contains(expect, actual):
"""
断言预期字符串包含在实际响应文本数据中
:param expect: 预期字符串
:param actual: 实际响应文本数据
:return: True/False
"""
contains 判断是否包含
- if actual.__contains__(expect):
- return True
- return False
def assert_equal(expect, key):
"""
断言预期值与实际响应中指定key的值相等
:param expect: 预期值
:param key: 实际响应数据中的key
:return: True/False
"""
预期数据与通过响应数据指定key获取到的值进行判断
- if str(expect) == str(resp.json().get(key)):
- return True
- return False
def assert_equals(expect, actual):
"""
断言预期值与实际响应中指定key的值相等
:param expect: 预期json数据
:param actual: 实际响应json数据
:return: True/False
"""
for key in expect.keys():
循环遍历预期结果的每个key, 从预期结果与实际结果分别获取key对应的value进行比较, 有一个值不相等即断言失败
- if str(expect.get(key)) != str(actual.get(key)):
- return False
return True
我们可以借助于 openpyxl, csv, yaml等数据格式对需要进行测试的接口数据进行参数化设置, 在测试的过程中通过外部文件管理测试数据.
以上就是本次为大家分享的, 使用python进行接口测试的实战案例.
最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。