如果某个方法每次返回不同的值,该方法如何进行单元测试
我正在尝试
result=someObject.someMethod()
expected_result=someValue
asertEqual(result,expected_result)
但是每次结果都不相同,所以有时测试是明确的,有时是失败的
答案 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
的部分代码。修复那些可变的部分,您就可以修复行为