在日常测试过程中或者研发开发过程中,目前接口暂时没有开发完成,测试人员又要提前介入接口测试中,测试人员不仅仅只是简单的编写测试用例,也可以通过一些mock的方法进行来提前根据接口测试的情况进行模拟返回接口的信息,进行模拟接口各种场景的异常。
requests-mock
requests-mock属于一个python库,大多数情况用于单元测试中模拟HTTP请求的响应,它可以进行来模拟接口的各种场景,就像真正的服务器一样。
01 安装
pip install requests-mock
02 模拟post请求
小编这里先自己随便写一个url地址,然后自己在模拟一个参数数据内容,已经请求成功后返回的状态码,然后通过requests进行根据模拟的内容进行请求,这样就能查看我们返回的数据是否正确了。
# coding:utf-8
import requests
import requests_mock
def test_01():
with requests_mock.Mocker() as m:
# 模拟post请求内容,返回的json格式,返回码为200
m.post('https://www.anjing.com',json
{'name':'anjing'},status_code=200)
# 根据模拟的请求进行通过requests进行发送模拟信息,查看返回结果内容
r = requests.post('https://www.anjing.com',json
{'name':'anjing'})
print(r.text)
assert r.status_code == 200
assert r.json()['name']=='anjing'
通过执行代码,可以发现我们已经模拟请求成功了
03 模拟动态post请求
上面介绍的是参数都写死了,小编这里模拟一个动态的数据,自己输入内容,然后后续进行自己校验内容,这里需要自己加入一个函数,将我们动态数据加入到函数中,然后进行返回。
# coding:utf-8
import requests
import requests_mock
def test_01():
with requests_mock.Mocker() as m:
# 模拟post请求内容,返回的json格式,返回码为200
def echo_response(request,context):
data = request.json()
return {'json':data,'status_code': 200}
m.post('https://www.anjing.com',json=echo_response)
data = {
'name':'anjing'
}
r = requests.post('https://www.anjing.com', json=data)
print(r.text)
assert r.status_code == 200
assert r.json()['json']['name']=='anjing'
通过执行代码情况,可以看出,动态数据请求正确
04 模拟请求错误异常
正常请求接口的时候,都会出现接口异常情况,比如超时哈,或者请求服务器异常等操作,接下来小编通过requests-mock进行模拟服务器异常的情况。
# coding:utf-8
import pytest
import requests
import requests_mock
from requests.exceptions import ConnectionError, Timeout
def test_01():
with requests_mock.Mocker() as m:
# 模拟请求超时处理
m.get('https://www.anjing.com',exc=Timeout)
# 通过pytest.raises进行捕捉异常,如果存在异常,则判断为pass
with pytest.raises(Timeout):
requests.get('https://www.anjing.com',timeout=1)
# 模拟服务器错误
m.get('https://www.anjing.com/api', exc=ConnectionError)
# 发送请求并断言是否抛出了预期的异常
with pytest.raises(ConnectionError):
requests.get('https://www.anjing.com/api')
上述代码中,小编先导入了请求错误的内容,然后进行通过requests-mock来模拟这两个请求,最后通过requests进行发送请求并通过pytest.raises进行判断是否存在异常操作,如果存在操作,则说明我们代码没有问题。
总 结
小编通过简单的两个案例列举了requests-mock的简单用法,并且简单介绍了requests-mock的库作用,不仅仅可以测试一些简单的api,还可以模拟测试接口异常情况,当然该库的方法不仅仅只有这么多,感兴趣的小伙伴们可以私下多了解了解。好了,感谢您的阅读,希望对您有所帮助。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。