[英]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.