[英]Mocking a method inside class in python test
我是 Python 的新手,並為現有代碼編寫單元測試。
我有以下 Python 代碼結構:
root_project:
-- src
-- signUp
-- __init__.py
-- abc.py
-- xyz.py
abc.py包含以下代碼:
from . import xyz
class Abc:
def __init__(self):
pass
def start_process(self):
xyz.start_timer()
我想在 class Abc 的方法start_process
中模擬xyz.start_timer()
,以便可以使用start_timer()
模擬版本。
我怎樣才能做到這一點?
您只需要修補xyz.start_timer()
,我只是將return
添加到start_process
以表明修補確實做了它應該做的:
import xyz
import unittest
from unittest import mock
class Abc:
def __init__(self):
pass
def start_process(self):
return xyz.start_timer()
class Test_Abc(unittest.TestCase):
@mock.patch('xyz.start_timer', return_value=True)
def test_start_process(self, start_process):
a = Abc()
self.assertTrue(a.start_process())
if __name__ == '__main__':
unittest.main()
出去:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
您可以使用mock.patch()簡單地修補start_timer
function 。
abc.py
import xyz
class Abc:
def __init__(self):
pass
def start_process(self):
xyz.start_timer()
test_abc.py
from unittest import mock, TestCase
from abc import Abc
class Test_Abc(TestCase):
@mock.patch("abc.start_timer")
def test_start_process(self, mock_start_timer):
# your test code
請注意,我已經修補abc.start_timer
而不是xyz.start_timer
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.