我正在实现pytest,我想使用vcrpy记录请求的答案。
我正在使用烧瓶1.0.2,pytest 4.5.0,pytest-flask 0.15.0和vcrpy 2.0.1。我使用flask实现了一个宁静的api。我写了一个测试,但是我想记录请求的响应,而vcr没有记录响应。
我的终点是:
from flask import jsonify
from flask import Blueprint
class CompanyResource(Resource):
def post(self):
response = jsonify({
"timestamp": datetime.utcnow()
})
response.status_code = 201
return response
api_bp = Blueprint('dashboard', __name__)
api = Api(api_bp)
api.add_resource(CompanyResource, 'company', endpoint='company')
测试如下
import pytest
import vcr
from flask import url_for
base_vcr = vcr.VCR(
cassette_library_dir='tests/dashboard/fixtures',
record_mode='once'
)
def test_create_company(client, company_data, headers):
with base_vcr.use_cassette('create_user.yaml'):
response = client.post(url_for('dashboard.company'),
json=company_data,
headers=headers)
我希望在指定目录上自动生成一个文件。但是当我运行测试时,没有生成卡带。事实是,如果我将client.post
更改为requests.post
,则响应将记录为一个get请求,但是如果我尝试发布,则错误为yield:
requests.exceptions.MissingSchema: Invalid URL '/api/dashboard/company': No schema supplied. Perhaps you meant http:///api/dashboard/company?
您对测试我的帖子终点并记录答案有什么建议吗?
答案 0 :(得分:0)
这有点晚了,但是vcrpy有一个库列表,它记录了HTTP请求。 requests
是其中之一,而其他https://vcrpy.readthedocs.io/en/latest/installation.html#compatibility中已提及。
不确定pytest中使用的是哪种测试客户端装置,但是如果您成功使用requests
调用端点,它将为您记录响应。