使用情景:
函數get_and_print內部使用requests.get去請求http://abc.com,響應結果爲json,並對json進行操作.
現要測試此函數,因此需要模擬實現requests.get,以保證函數單元測試通過,流程如下:
需要用到測試相關的庫爲 responses
pip install responses
-
配置環境,參考使用pycharm進行單元測試並統計代碼覆蓋率
-
待測試函數代碼位於 req.py,代碼如下
import responses
def get_and_print():
res = requests.get('http://www.abc.com').json()
print('Do something with res:',res)
return res
- 測試代碼位於test文件夾的任意python文件中,代碼如下
import pytest
import responses
from func.req import get_and_print
# 此處mock指定url的響應
@pytest.fixture
def mocked_responses():
with responses.RequestsMock() as rsps:
rsps.add(responses.GET, 'http://www.abc.com', status=200, body='{"id":123}',
content_type='application/json')
yield rsps
# 測試代碼需要注入mocked_responses
def test_get_and_print(mocked_responses):
assert 'id' in get_and_print()
- 運行測試,參考步驟1中的鏈接