[英]Python unittest mock method which called in another module work error
這是我的probject結構,這個問題是MCVE。
A.py
def do_something():
print 'a i do something'
return 10
B.py
from wrx_test.use_mock.A import do_something
class B(object):
def b_do_something(self):
x = do_something()
print x
return x
use_mock.py
from mock import patch
from unittest import TestCase
from wrx_test.use_mock.B import B
class TestUseMock(TestCase):
@patch('wrx_test.use_mock.A.do_something')
def test_use_mock(self, mock_do_something):
from wrx_test.use_mock.A import do_something
mock_do_something.return_value = 4
print do_something()
B().b_do_something()
在use_mock.py中,我將模擬方法return_value設置為4,但是它不能正常工作。 我如何才能使A.do_something
方法A.do_something
在模塊B中正常工作,現在我想知道原因。
結果
a i do something
10
我認為模擬的工作方式是您在模塊中指定一個函數,以便在另一個調用中使用該函數時將其替換為模擬。 例如:patch('A.do_something)意味着如果您測試一個內部調用A.do_something()的函數,它將在該調用內被替換。 但是在這里,您直接執行該功能。 我也沒有看到任何有用的案例。 如果要直接調用模擬,請執行以下操作:mock_do_something()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.