首页 > 其他分享 >requests---requests-mock的简单介绍

requests---requests-mock的简单介绍

时间:2024-03-25 11:55:06浏览次数:31  
标签:请求 anjing --- json mock requests 模拟

前言

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

requests-mock

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

安装

pip install requests-mock

模拟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'

通过执行代码,可以发现我们已经模拟请求成功了

模拟动态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'

通过执行代码情况,可以看出,动态数据请求正确

模拟请求错误异常

正常请求接口的时候,都会出现接口异常情况,比如超时哈,或者请求服务器异常等操作,接下来小编通过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,还可以模拟测试接口异常情况,当然该库的方法不仅仅只有这么多,感兴趣的小伙伴们可以私下多了解了解。好了,感谢您的阅读,希望对您有所帮助。

 

标签:请求,anjing,---,json,mock,requests,模拟
From: https://www.cnblogs.com/qican/p/18094078

相关文章

  • 上周热点回顾(3.18-3.24)
    热点随笔:· 京东大佬问我:下单后30分钟未支付,自动取消有什么设计方案么? (帝莘)· 园子的新版favicon,您觉得哪款更好看 (博客园团队)· Garnet:力压Redis的C#高性能分布式存储数据库 (InCerry)· 没想到三天10KStar的营销利器MediaCrawler开源作者已经删库了 (aehyok)·......
  • 六、使用jsPlumb实现流程图--Overlays使用
    一、Overlay的功能叠层(Overlay)可以是任意的DOM元素,用于叠加在Connection或Endpoint元素上--绝大部分都是用于叠加在线条上。jsPlumb把Overlay分为了五类:Arrow、Label、PlainArrow、Diamond、Custom。除了Custom和Label类型,其他三类就是jsPlumb提供的可以直接使用的图形;Label类......
  • ElasticSearch8 - SpringBoot整合ElasticSearch
    前言springboot整合ES有两种方案,ES官方提供的ElasticsearchJavaAPIClient和spring提供的[SpringDataElasticsearch](SpringDataElasticsearch)两种方案各有优劣Spring:高度封装,用着舒服。缺点是更新不及时,有可能无法使用ES的新APIES官方:更新及时,灵活,缺点是......
  • 国际结算-进口信用证和出口信用证
    目录进口信用证出口信用证进口信用证进口信用证业务是银行根据进口商的申请,向出口商开出的一种有条件的付款承诺。这种业务允许进口商在收到货物之前,通过银行向出口商支付货款,从而确保交易的顺利进行。以下是关于进口信用证业务的详细介绍:业务种类:进口信用证业务包括多......
  • 【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真
    操作环境:MATLAB2022a1、算法描述"4ASK"是一种数字调制技术,代表4级振幅移移键控(4-LevelAmplitudeShiftKeying)调制。它是一种数字通信中常用的调制方式之一,用于将数字信号转换为模拟信号以便传输,或者将模拟信号转换为数字信号以便处理。在4ASK调制中,每个数字比特被映射......
  • 【MATLAB源码-第12期】基于matlab的4FSK(4CPFSK)的误码率BER理论值与实际值仿真。
    操作环境:MATLAB2022a1、算法描述4FSK在频移键控(FSK)编码的基础上有所扩展。FSK是一种调制技术,它通过在不同频率上切换来表示不同的数字或符号。而4FSK则是FSK的一种变种,表示使用了4个不同的频率来传输信息。在4FSK中,每个数字或符号被映射到一组连续的四个频率中的一个。这......
  • Go-Rod #3 Context and Timeout
    这个示例演示了如何设置超时操作。packagemainimport( "math/rand" "time" "github.com/go-rod/rod")funcmain(){ page:=rod.New().MustConnect().MustPage("https://github.com") page. //Seta5-secondtimeoutforallcha......
  • openGauss社区入门(openGauss-常用数据类型)
    常用数据类型数据类型 说明布尔类型 booleantrue/'1'/'yes'false/'0'/'no'数值类型 smallint两字节int4字节bigint8字节double/real浮点型money货币(两位小数||字符类型|varchar(n几位数)/char/text||二进制|bytea||位串类型|一串0、1bit(n)/bit......
  • 永恒之蓝漏洞复现(ms17-010)
    永恒之蓝漏洞复现(ms17-010)环境信息收集先扫描目标靶机IP进入MSF查看是否存在永恒之蓝的漏洞攻击永恒之蓝漏洞复现(ms17-010)环境攻击机:kali靶机:WindowsServer2008信息收集对ip进行收集开放什么端口先扫描目标靶机IP因为在同一个内网之中所以可以使用arp-......
  • GUID生成器 - 开源研究系列文章
          今天整理原来的代码,把GUID生成器的源码进行了整理。原来的C#和VB6的代码都进行了整理。然后把这个代码发布出来,让需要的读者能够进行复用。 1、项目目录;  2、源码介绍;  3、运行界面;  4、使用介绍......