如果一个方法每次返回不同的值,如何对该方法进行单元测试
我正在试用
result=someObject.someMethod()
expected_result=someValue
asertEqual(result,expected_result)
但每次的结果都不一样,所以有时测试很清楚,有时失败
我们必须在现实生活和测试行为之间寻求平衡。在许多情况下,我们可以简化。看看python mockhttps://docs.python.org/3/library/unittest.mock.html.
例如,someObject.someMethod的返回值取决于someOtherObject.dependMethod,如果您要修复someOtherObject.dependMethod
的retern值,则可以修复行为
你的测试可以是这样的:
from unittest.mock import patch
....
class MyTestCase(TestCase):
...
def test_something(self):
with patch.object(SomeOtherObjectClass, 'dependMethod', return_value=<any known value>) as mock_method:
...
result=someObject.someMethod()
expected_result=someValue
asertEqual(result,expected_result)
...
请在此处查看完整文档https://docs.python.org/3/library/unittest.mock.html
我相信,如果您更深入地研究实现someObject.someMethod()
,那么您可以找到引发可更改effect
的代码部分。修复那些可更改的部件,你就可以修复行为