0
私はworker_functions
辞書からfun_1
機能にパッチを適用しようとしていますし、私は苦労しているように見える:ファンクションマップ/ディクショナリでファンクションをモックする方法は?
import sys
from worker_functions import (
fun_1,
fun_2,
fun_3,
)
FUNCTION_MAP = {
'run_1': fun_1,
'run_2': fun_2,
'run_3': fun_3,
}
def main():
command = sys.argv[1]
tag = sys.argv[2]
action = FUNCTION_MAP[command]
action(tag)
私はcli.fun_1
とcli.main.action
とcli.action
をからかってみたが、これは失敗につながっています。
from mock import patch
from cli import main
def make_test_args(tup):
sample_args = ['cli.py']
sample_args.extend(tup)
return sample_args
def test_fun_1_command():
test_args = make_test_args(['run_1', 'fake_tag'])
with patch('sys.argv', test_args),\
patch('cli.fun_1') as mock_action:
main()
mock_action.assert_called_once()
私は何かが欠けているように見えるのですか?
これは潜在的に鮮やかに見えます。 – GiantsLoveDeathMetal
mockから 'MagicMock'をインポートしますか? – GiantsLoveDeathMetal
はい、インポートを追加しました。 –