参考:https://blog.csdn.net/younger_china/article/details/72904448
原文:
具体的命令参数参看:http://nedbatchelder.com/code/coverage/cmd.html
[popexizhi: 测试了一下2.7 和3 都可以使用,但是注意安装的对应版本 ,之后有时间可以好好试试]
原文:
5. Mock多个函数,主要是注意顺序
1 import unittest 2 import mock 3 class Calculator(object): 4 def add(self, a, b): 5 return a+b 6 def multiple(self, a, b): 7 return a*b 8 9 class TestProducer(unittest.TestCase): 10 def setUp(self): 11 self.calculator = Calculator() 12 13 @mock.patch.object(Calculator, 'add') 14 def test_add(self, mock_add): 15 mock_add.return_value = 3 16 self.assertEqual(self.calculator.add(8, 14), 3) 17 18 @mock.patch.object(Calculator, 'add') 19 def test_effect_list(self, mock_add): 20 mock_add.side_effect = [1, 2, 3] 21 self.assertEqual(self.calculator.add(8, 14), 1) 22 self.assertEqual(self.calculator.add(8, 14), 2) 23 self.assertEqual(self.calculator.add(8, 14), 3) 24 25 # 这里@的顺序和input是从右向左的 26 @mock.patch.object(Calculator, 'add') 27 @mock.patch.object(Calculator, 'multiple') 28 def test_both(self, mock_multiple, mock_add): 29 mock_add.return_value = 1 30 mock_multiple.return_value = 2 31 self.assertEqual(self.calculator.add(8, 14), 1) 32 self.assertEqual(self.calculator.multiple(8, 14), 2) 33 34 if __name__=="__main__": 35 unittest.main() ~
[popexizhi: 这里使用 顺序如下注意
25 # 这里@的顺序和input是从右向左的 26 @mock.patch.object(Calculator, 'add') 27 @mock.patch.object(Calculator, 'multiple') 28 def test_both(self, mock_multiple, mock_add): 29 mock_add.return_value = 1 30 mock_multiple.return_value = 2
]
Coverage
打命令coverage加测试文件,就可以得到覆盖率,可以生成html格式的报告,每次运行一个文件都会生成一个.coverage文件,需要将combine所有结果才能得到一个完整的报告。具体的命令参数参看:http://nedbatchelder.com/code/coverage/cmd.html
[popexizhi: 测试了一下2.7 和3 都可以使用,但是注意安装的对应版本 ,之后有时间可以好好试试]
没有评论:
发表评论