【发布时间】:2017-12-02 22:02:19
【问题描述】:
我有以下代码。文件 foo.py 有:
#!/usr/bin/python3
import time
class Foo():
def foo(self, num):
time.sleep (10)
return num + num
文件 mock_test.py 有:
#!/usr/bin/python3
from mock import patch
import foo
import unittest
class FooTestCase(unittest.TestCase):
@patch('foo.Foo.foo') # filename, classname, fn name
def test_one(self, mock_foo):
mock_foo.return_value = 'mock return value'
myobj = foo.Foo()
print (myobj.foo())
if __name__ == '__main__':
unittest.main()
并且文件 regular_test.py 有:
#!/usr/bin/python3
import foo
import unittest
class FooTestCase(unittest.TestCase):
def test_one(self):
f = foo.Foo()
print (f.foo(20))
if __name__ == '__main__':
unittest.main()
现在,如果我运行 regular_test.py,它会检查传递给 f.foo() 的参数数量但是 mock_test.py 没有做这样的事情!模拟测试不应该仅用于加速函数执行吗?如果我使用 0 个参数或多于 1 个参数调用 foo(),为什么它不会标记错误?
【问题讨论】:
标签: python function unit-testing mocking arguments