如何解决Python unittest mock patch.multiple 装饰器问题
我需要在 1 个单元测试中模拟 2 个外部 API 响应。我模拟来自分页 API 调用的响应。我正在尝试使用 unittest mock patch.multiple 装饰器来制作它。但是补丁总是失败。我应该如何使用 patch.multiple?
我的单元测试 (movie_test.py):
from unittest.mock import patch,DEFAULT,Mock
import pytest
import json
from src.app import create_app
app = create_app() # pylint: disable=invalid-name
@pytest.fixture
def client():
app.config['TESTING'] = True
yield app.test_client()
@pytest.fixture
def movie_search_sort_verification_page_1():
with open("tests/fixtures/movie_search_sort_verification_page_1.json") as f:
return json.load(f)
@pytest.fixture
def movie_search_sort_verification_page_2():
with open("tests/fixtures/movie_search_sort_verification_page_2.json") as f:
return json.load(f)
@patch.multiple("app.routes.requests.get",create=True,movie_search_sort_verification_page_1=DEFAULT,movie_search_sort_verification_page_2=DEFAULT)
def test_movie_search_sort_verification_using_mock(movie_search_sort_verification_page_1,movie_search_sort_verification_page_2,client):
movie_search_sort_verification_page_1.return_value = Mock(ok=True)
movie_search_sort_verification_page_1.return_value.json.return_value = movie_search_sort_verification_page_1()
movie_search_sort_verification_page_2.return_value = Mock(ok=True)
movie_search_sort_verification_page_2.return_value.json.return_value = movie_search_sort_verification_page_2()
resp = client.get('/v1/movies/search?\
query=terminator\
®ion=en_US\
&genres=878\
&sort=title,asc,1\
&sort=release_date,desc,2\
&sort=vote_average,3')
assert len(resp.json['results']) == 4
assert resp.status_code == 200
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。