首页 > 其他分享 >requests-mock:轻松模拟HTTP请求的利器

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

时间:2023-11-07 10:22:22浏览次数:34  
标签:www wxwxwx HTTP json mock requests 模拟

一、 简介

requests-mock一个python库,用于单元测试中模拟HTTP请求的响应,它可以进行来模拟接口的各种场景。

安装:

pip install requests-mock

  

二、 使用方法

模拟post请求

 

import requests

import requests_mock


def test_01():
    with requests_mock.Mocker() as m:
        # 模拟post请求内容,返回的json格式,返回码为200
        m.post('https://www.wxwxwx.com', json={'name': 'wx'}, status_code=200)

        # 根据模拟的请求进行通过requests进行发送模拟信息,查看返回结果内容
        r = requests.post('https://www.wxwxwx.com', json={'name': 'wx'})

        print(r.text)

        assert r.status_code == 200

        assert r.json()['name'] == 'wx'


test_01()

  

模拟动态post请求

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.wxwxwx.com', json=echo_response)

        data = {'name': 'wx'}
        r = requests.post('https://www.wxwxwx.com', json=data)
        print(r.text)
        assert r.status_code == 200
        assert r.json()['json']['name'] == 'wx'


test_01()

  

模拟请求错误异常

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.wxwxwx.com', exc=Timeout)

        # 通过pytest.raises进行捕捉异常,如果存在异常,则判断为pass
        with pytest.raises(Timeout):
            requests.get('https://www.wxwxwx.com', timeout=1)

        # 模拟服务器错误
        m.get('https://www.wxwxwx.com/api', exc=ConnectionError)
        # 发送请求并断言是否抛出了预期的异常
        with pytest.raises(ConnectionError):
            requests.get('https://www.wxwxwx.com/api')

  

标签:www,wxwxwx,HTTP,json,mock,requests,模拟
From: https://www.cnblogs.com/pywen/p/17814435.html

相关文章

  • 【python爬虫】80页md笔记0基础到scrapy项目高手,第(4)篇:requests和网络数据获取进阶
    本阶段主要学习requests这个http模块,该模块主要用于发送请求响应,该模块有很多的替代模块,比如说urllib模块,但是在工作中用的最多的还是requests模块,requests的代码简洁易懂,相对于臃肿的urllib模块,使用requests编写的爬虫代码将会更少,而且实现某一功能将会简单。因此建议大家掌握该......
  • vue修改http请求头_vue-resouce设置请求头的三种方法
    vue修改http请求头_vue-resouce设置请求头的三种方法本文主要介绍了vue-resouce设置请求头的三种方法,分享给大家,具体如下:第一种:在Vue实例中设置varvm=newVue({el:'#rrapp',data:{showList:true,title:null},http:{root:'/',headers:{token:tok......
  • HttpClient报错 org.apache.http.NoHttpResponseException : 10.1.1.0:13001 failed t
    一、问题描述使用HttpClient并发调用http接口,并发量稍微大一点就会报错org.apache.http.NoHttpResponseException:10.1.1.0:13001failedtorespond 二、排查过程最开始怀疑是服务端连接过多,拒绝请求了,监控发现服务端并没有多少连接找运维搭建了一个新环(只有我们请求服务端),......
  • 配置使用百度地图时出现:APP Referer校验失败。请检查该ak设置的白名单与访问所有的域
    如果是个人内部测试使用,直接将IP白名单设置为*  ......
  • Apache, service httpd stop, Address already in use:
    servicehttpdstopStoppinghttpd:                                           [FAILED][root@testtestapache_logs]#servicehttpdstartStartinghttpd:(98)Addressalreadyinuse:make_sock:couldnotbindtoaddress[::......
  • Rola-IP代理IP(Http代理/socks5代理/htttps代理) 评测
    Rola-IP评测现在就来探寻为什么Rola-IP被视为世界上最好的住宅代理服务提供商之一。从我们的评论中学习并了解其优缺点。Rola-IP概述您是否打算尝试Rola-IP(Rola-IP)代理服务?那您必须阅读Rola-IP评测,以了解是否可以将其用于打算用作代理的内容。毫无疑问,Rola-IP代理是最好的代理,但是......
  • requests库编写的爬虫程序没有那么难!
    下文是用requests库编写的爬虫程序,用于爬取toutiao上的图片。程序使用了代理服务器,代理服务器的地址为duoip,端口号为8000。importrequestsfrombs4importBeautifulSoup#设置代理服务器proxy_host='duoip'proxy_port=8000proxy={'http':'http://'+proxy_host+'......
  • 如何使用 Loadgen 来简化 HTTP API 请求的集成测试
    引言在编写HTTP服务的过程中,集成测试[1]是保证程序正确性的重要一环,如下图所示,其基本的流程就是不断向服务发起请求然后校验响应的状态和数据等:为大量的API和用例编写测试是一件繁琐的工作,而Loadgen[2]正是为了简化这一过程而设计的。一个简单的测试假定我们在127.......
  • fatal: unable to access 'https://github.com/wolfcw/libfaketime.git/': Encountere
    您遇到的问题可能是网络问题或与`git`配置有关。以下是一些建议的解决步骤:1.**检查网络连接**:确保您的服务器/计算机可以正常访问外部网站。您可以尝试使用`ping`或`curl`来检查网络连接。 ```bash pinggithub.com ```2.**使用HTTP代替HTTPS**:尝试使用HTTP代替HTT......
  • Java21对虚拟线程进行http压测使用不同的GC
    JDK21默认GC是G1.JDK21除了G1外,还可以使用ZGC(Java11预览、Java15正式版),Java21在ZGC基础上继续推出了分代ZGC,目前还是试行阶段。开启ZGC:java-XX:+UseZGC-jarmyapp.jar开启ZGC,并试用分代ZGCjava-XX:+UseZGC-XX:+ZGenerational-jarmyapp.jar以下的对一个启用tomcat......