模擬requests.get的行爲,來進行單元測試

使用情景:

函數get_and_print內部使用requests.get去請求http://abc.com,響應結果爲json,並對json進行操作.
現要測試此函數,因此需要模擬實現requests.get,以保證函數單元測試通過,流程如下:
需要用到測試相關的庫爲 responses

pip install responses
  1. 配置環境,參考使用pycharm進行單元測試並統計代碼覆蓋率

  2. 待測試函數代碼位於 req.py,代碼如下


import responses

def get_and_print():
    res = requests.get('http://www.abc.com').json()
    print('Do something with res:',res)
    return res
  1. 測試代碼位於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. 運行測試,參考步驟1中的鏈接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章