所以我有这段代码可以模拟两次,第一次是通过以下方式模拟导入:
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。 有人可以帮助我了解发生了什么吗?他们为什么互相争吵?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。