所以我有这段代码可以模拟两次,第一次是通过以下方式模拟导入:
sys.modules['random'] = MagicMock()
第二次是在使用该导入功能的单元测试中发生的,例如,使用随机的功能
测试。 py是:
import sys
import unittest
from unittest import mock
from unittest.mock import MagicMock
import foo
sys.modules['random'] = MagicMock()
class test_foo(unittest.TestCase):
def test_method(self):
with mock.patch('random.choice',return_value = 2):
object = foo.FooClass(3)
self.assertEqual(2,object.method(),'Should be 2')
def test_staticmethod(self):
with mock.patch('random.choice','should be 2')
原始文件Foo.py是:
import random
class FooClass:
def __init__(self,arg):
self.arg = arg
def method(self):
print(random.choice)
return random.choice([1,2,3])
@staticmethod
def staticmethod():
print(random.choice)
random.choice([1,3])
两个模拟相互矛盾,并且不会发生随机模拟。 当它随机打印时,实际上会打印:
<<bound method Random.choice of <random.Random object at 0x7fe688028018>>
我想要打印MagicMock。 有人可以帮助我了解发生了什么吗?他们为什么互相争吵?