单元测试返回不同值的方法



如果一个方法每次返回不同的值,如何对该方法进行单元测试

我正在试用

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的代码部分。修复那些可更改的部件,你就可以修复行为

最新更新