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

时间:2018-07-23 07:18:35

标签: django unit-testing

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

我正在尝试

result=someObject.someMethod()
expected_result=someValue
asertEqual(result,expected_result)

但是每次结果都不相同,所以有时测试是明确的,有时是失败的

1 个答案:

答案 0 :(得分:0)

我们必须在现实的生活和测试行为之间寻求平衡。在许多情况下,我们可以简化。看看python模拟https://docs.python.org/3/library/unittest.mock.html

例如,someObject.someMethod的返回值取决于someOtherObject.dependMethod,如果您要修复someOtherObject.dependMethod的后继值,则可以修复行为

您的测试如下所示:

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