【发布时间】:2021-09-24 09:34:01
【问题描述】:
我有以下服务和一个发布请求:
import requests
class Attt():
def get_req(self):
pload = {'username': 'Olivia', 'password': '123'}
r = requests.post('https://httpbin.org/post', data=pload)
print(r.text)
print(r.content)
obj=Attt()
obj.get_req()
我想模拟请求,以便创建所需的服务响应。 我写了一个如下的测试:
import unittest
from unittest.mock import patch
from mock_tutorial.attt import Attt
import pandas as pd
class TestMockService(unittest.TestCase):
def test_mock(self):
fake_json = [{'test': "mock"}]
with patch('mock_tutorial.attt.requests.post') as mock_get:
mock_get.return_value.status_code = 200
mock_get.return_value.json.return_value = fake_json
obj = Attt()
response = obj.get_req()
print('response json', response.json())
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), fake_json)
if __name__ == "__main__":
unittest.main()
但由于get_req 方法不返回响应,断言失败:AttributeError: 'NoneType' object has no attribute 'json'。如何修改断言以检查 get_req 方法的响应是否已被相应地模拟到 fake_json 变量?
【问题讨论】:
标签: python json unit-testing service mocking