概要
requests の get を pytest の monkeypatch でモックしてみたいと思います
環境
- macOS 11.4
- Python 3.8.3
- requests 2.25.1
- pytest 6.2.4
サンプルコード
- vim test.py
import requests
def get_access():
result = requests.get("http://localhost")
return result.status_code
テストコード
- vim test_test.py
import requests
from test import get_access
class MockResponse:
def __init__(self, code=200):
self.status_code = code
self.text = ""
@staticmethod
def json():
return {"": ""}
def mock_get(*args, **kwargs):
return MockResponse()
def test_get_access(monkeypatch):
monkeypatch.setattr(requests, "get", mock_get)
result = get_access()
assert(result == 200)
解説
ポイントは mock_get と MockResponse です 本来 get が返すべきクラスを自分が作成したクラスにすげ替えてあげる感じになります
これで実際にはアクセスせずテストすることができるようになります
0 件のコメント:
コメントを投稿