簡體   English   中英

Python unittest模擬方法在另一個模塊中調用時出錯

[英]Python unittest mock method which called in another module work error

這是我的probject結構,這個問題是MCVE。

  • wrx_test
    • use_mock
    • 初始化 .py
    • A.py
    • B.py
    • use_mock.py

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM