Vcrpy,一个超酷的python库

Vcrpy,一个超酷的python库

大家好,我是木木。今天给大家分享一个超酷的Python库,vcrpy

vcrpy是一个在自动化测试中极为有用的库,它能够记录和重放HTTP交互,极大地简化了测试过程中对外部服务依赖的管理。

这个库通过模拟真实的HTTP响应,为开发者提供了一种高效且简便的方法来测试应用程序,特别是在涉及外部API调用时。

Vcrpy,一个超酷的python库
图源网络

核心特点

  1. 记录/重放
    1. vcrpy能记录HTTP请求和响应,之后可重放,避免了对实际服务的重复请求。
  2. 简化测试
    1. 通过使用录制的响应,它简化了测试环境的搭建,特别是涉及到外部服务调用时。
  3. 灵活配置
    1. 支持多种序列化格式(如JSON, YAML),并允许细粒度的配置,如请求匹配、过滤敏感信息等。

最佳实践

安装vcrpy非常简单,只需要运行以下pip命令:

pip install vcrpy

接下来,让我们看看如何使用vcrpy的两个基本功能:

1. 录制HTTP请求

当你第一次执行涉及HTTP请求的测试时,vcrpy会自动记录这些请求及其响应到一个”cassette”文件中。

import vcr
import urllib.request

with vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml'):
    response = urllib.request.urlopen('http://www.iana.org/domains/reserved').read()
    assert b'Example domains' in response

这段代码在执行HTTP请求时会创建一个名为synopsis.yaml的文件,记录请求和响应的详细信息。

Vcrpy,一个超酷的python库
图源网络

2. 重放HTTP请求

一旦请求被记录下来,后续的测试运行会使用这个记录的响应,而不是真实的HTTP请求。

@vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml')
def test_iana():
    response = urllib.request.urlopen('http://www.iana.org/domains/reserved').read()
    assert b'Example domains' in response
Vcrpy,一个超酷的python库
图源网络

高级功能示例

vcrpy还允许你对cassette进行细粒度的配置,比如过滤掉敏感信息,或者自定义请求的匹配逻辑。以下是一个示例,展示了如何过滤掉敏感信息:

import vcr

my_vcr = vcr.VCR(
    filter_headers=['authorization'],
)

with my_vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml'):
    response = requests.get('https://httpbin.org/ip')
    # 这里的请求将记录,但是请求头中的`authorization`会被过滤掉

这个功能对于保护测试记录中的敏感信息非常有用,尤其是在分享cassette文件时。

def before_record_cb(request):
    if request.path == '/login':
        return None
    return request
    
my_vcr = vcr.VCR(
    before_record_request=before_record_cb,
)
with my_vcr.use_cassette('test.yml'):
    # 下面是个人代码

同时,你也可以注册一个回调,以便HTTP请求添加到vcr的忽略列表里,上面代码展示了会忽略记录login的请求

小总结

vcrpy是测试中处理HTTP请求的神器。它不仅能够帮助开发者录制和重放HTTP请求,从而简化测试流程,还支持灵活的配置和敏感信息过滤,是提高测试效率和保障测试安全性的重要工具。




—— End ——




原文始发于微信公众号(木木夕咦):Vcrpy,一个超酷的python库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/259134.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!