跳转到主要内容

python-requests的VCR模拟

项目描述

Betamax是VCR的requests模拟。这将使模拟请求变得容易得多。它在Travis CI上进行了测试。

用更幽默的方式来说:“Betamax记录您的HTTP交互,这样NSA就不需要了。”

使用示例

from betamax import Betamax
from requests import Session
from unittest import TestCase

with Betamax.configure() as config:
    config.cassette_library_dir = 'tests/fixtures/cassettes'


class TestGitHubAPI(TestCase):
    def setUp(self):
        self.session = Session()
        self.headers.update(...)

    # Set the cassette in a line other than the context declaration
    def test_user(self):
        with Betamax(self.session) as vcr:
            vcr.use_cassette('user')
            resp = self.session.get('https://api.github.com/user',
                                    auth=('user', 'pass'))
            assert resp.json()['login'] is not None

    # Set the cassette in line with the context declaration
    def test_repo(self):
        with Betamax(self.session).use_cassette('repo'):
            resp = self.session.get(
                'https://api.github.com/repos/sigmavirus24/github3.py'
                )
            assert resp.json()['owner'] != {}

它到底做了什么?

如果您不熟悉VCR,可能需要更好地了解Betamax的功能。

Betamax拦截您发出的每个请求,并尝试找到已拦截并记录的匹配请求。然后可以发生两件事:

  1. 如果找到匹配的请求,它将返回与之关联的响应。

  2. 如果没有找到匹配的请求,并且允许记录新的响应,它将发出请求,记录响应并返回响应。

记录的请求和相应的响应(也称为交互)存储在名为磁带的文件中。(文档的示例部分中可以看到一个示例磁带。)您存储磁带的目录称为您的库,或您的磁带库

VCR磁带兼容性

截至目前,Betamax可以使用任何VCR录制磁带。唯一的限制是python-requests在每个响应中返回一个URL。VCR现在不会将这个URL存储在磁带中,但我们将这样做。不幸的是,任何用于回放响应的VCR录制磁带都不会有返回的响应的URL属性。这是一个小麻烦,但不是可以解决的问题。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

betamax-0.9.0.tar.gz (80.0 kB 查看哈希)

上传时间

构建分发

betamax-0.9.0-py2.py3-none-any.whl (33.4 kB 查看哈希)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面