我正在學習如何使用py.test編寫測試,但我不知道如何模擬外部調用。嘲笑py.test中的標準庫調用
讓說我有一個代碼來進行測試:
app.py:
import random
def trade_robot(stock, price):
return ' '.join((random.choice(('buy', 'sell', 'keep')), stock))
我要確保我檢查案例random.choice決定我需要買(我想檢查它正確地加入字符串'買'的情況下)。
我的測試代碼應該是這樣的:
import pytest
from app import trade_robot
import sys
def test_buy_case():
# some mock magic here
assert trade_robot('AAPL', 500) == 'buy AAPL'
if __name__ == "__main__":
pytest.main("-v %s" % sys.argv[0])
應該在「一些模擬魔法」是什麼讓這個測試通過每一次?謝謝!
謝謝!我已經測試了這段代碼,並且我可以在測試函數中使用上下文管理器:使用mock.patch.object(random,'choice')as m:m.return_value ='buy'assert trade_robot('AAPL',500) =='買AAPL'。它的工作原理! –