我有一個類似于以下代碼的案例,我試圖修補使用 from 陳述句匯入的功能:
from module1 import function1
def function2():
function1_result = function1()
return 2*function1_result
然后測驗代碼是:
from unittest import patch
def test_function2():
func1_value = 5
with patch("module1.function1", return_value=func1_value) as patched_func1:
function2_value = function2()
assert function2_value==2*func1_value
然而,代碼運行但它不使用修補函式 1 并實際呼叫該函式。但是,如果我將 import 陳述句更改為 just import module1then 測驗運行良好。
uj5u.com熱心網友回復:
參見Where to patch doc,檔案中的例子非常清楚。
module1.py:
def function1():
return 1
module2.py:
from module1 import function1
def function2():
function1_result = function1()
return 2*function1_result
test_module2.py:
from unittest import TestCase
from unittest.mock import patch
import unittest
from module2 import function2
class TestModule2(TestCase):
def test_function2(self):
func1_value = 5
with patch("module2.function1", return_value=func1_value) as patched_func1:
function2_value = function2()
assert function2_value == 2*func1_value
if __name__ == '__main__':
unittest.main()
測驗結果:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370980.html
