有关于测试unittest 和 mock
mock 模拟 是辅助单元测试的一个模块 使用mock可以替换掉一部分依赖函数
例子:
def test_add(self): count = Count() count.add = mock.Mock(return_value=13) result = count.add(8,5) self.assertEqual(result,13)
此处应用mock代替了Count中的add方法,使用return_value设定了返回值为13
断言成功
例子2:
def test_add(self): count = Count() count.add = mock.Mock(return_value=13, side_effect=count.add) result = count.add(8, 8) print(result) count.add.assert_called_with(8, 8) self.assertEqual(result, 16)
此处使用mock时增加了side_effect 参数,side_effect参数会替代return_value 所拟定的返回值,此时将调用count.add 而非return_value
例子3:
@patch("function.multiply") def test_add_and_multiply2(self, mock_multiply): x = 3 y = 5 mock_multiply.return_value = 15 addition, multiple = function.add_and_multiply(x, y) mock_multiply.assert_called_once_with(3, 5) self.assertEqual(8, addition) self.assertEqual(15, multiple)
使用patch()装饰器 在测试时将制定的对象替换为一个模拟,并且在结束时还原
这里模拟function.py文件中multiply()函数
def test_add_and_multiply2(self, mock_multiply):
此处将mock的multiply()函数重命名为mock_multiply
测试add_and_multiply方法 但是 multiply 存在问题 则使用 mock_multiply 代替并设置预设值

浙公网安备 33010602011771号