requests-mock:轻松模拟HTTP请求的利器

前言

在日常测试过程中或者研发开发过程中,目前接口暂时没有开发完成,测试人员又要提前介入接口测试中,测试人员不仅仅只是简单的编写测试用例,也可以通过一些mock的方法进行来提前根据接口测试的情况进行模拟返回接口的信息,进行模拟接口各种场景的异常。

requests-mock

requests-mock属于一个python库,大多数情况用于单元测试中模拟HTTP请求的响应,它可以进行来模拟接口的各种场景,就像真正的服务器一样。

如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以加裙485187702,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

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,还可以模拟测试接口异常情况,当然该库的方法不仅仅只有这么多,感兴趣的小伙伴们可以私下多了解了解。好了,感谢您的阅读,希望对您有所帮助。

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

8小时传疯!大厂面试真题全被大佬整理在这个小程序上了!【软件测试,建议收藏】

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础 

  全套资料获取方式:点击下方小卡片自行领取即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值