私はモックを初めて使用し、この関数の単体テストを作成しています:
# utils.py
import requests
def some_function(user):
payload = {'Email': user.email}
url = 'http://api.example.com'
response = requests.get(url, params=payload)
if response.status_code == 200:
return response.json()
else:
return None
単体テストの一部としてMichael Foord の Mockライブラリを使用していますresponse.json()
が、json 構造を返すために をモックするのが困難です。これが私の単体テストです:
# tests.py
from .utils import some_function
class UtilsTestCase(unittest.TestCase):
def test_some_function(self):
with patch('utils.requests') as mock_requests:
mock_requests.get.return_value.status_code = 200
mock_requests.get.return_value.content = '{"UserId":"123456"}'
results = some_function(self.user)
self.assertEqual(results['UserId'], '123456')
ドキュメントを読んだ後、運が悪かったため、さまざまなモック設定の組み合わせを数多く試しました。results
単体テストを印刷すると、必要なjsonデータ構造ではなく、常に次のように表示されます。
<MagicMock name=u'requests.get().json().__getitem__().__getitem__()' id='30315152'>
私が間違っていることについて考えていますか?