如何在 Python 中使用 unittest.mock 模块进行模拟测试

2023-04-13 00:00:00 测试 模块 模拟

unittest.mock 模块可以用来模拟测试,即用虚拟的对象代替真实的对象进行测试。这样可以使测试更加简单、可靠、快速。

下面是一个使用 unittest.mock 模块进行字符串模拟测试的示例代码:

import unittest
from unittest.mock import patch

def func():
    return input('请输入一个字符串:')

class MockTest(unittest.TestCase):

    @patch('builtins.input', return_value='pidancode.com')
    def test_input_str(self, mock_input):
        self.assertEqual(func(), 'pidancode.com')

    @patch('builtins.input', return_value='皮蛋编程')
    def test_input_str_chinese(self, mock_input):
        self.assertEqual(func(), '皮蛋编程')

if __name__ == '__main__':
    unittest.main()

在这个例子中,我们使用了 Python 内置函数 input() 来获取用户输入的字符串。我们使用 @patch 装饰器对其进行模拟,指定输入的字符串为 'pidancode.com' 或' 皮蛋编程'。

在测试代码中,我们使用 assertEqual() 方法来判断模拟输入的结果与函数 func() 的返回值是否相等。

通过这种方式,我们可以使用 unittest.mock 模块来模拟测试用户输入的字符串,以此来测试与用户输入相关的函数。

相关文章