html tool

2019年6月24日星期一

转: Mock多个函数,主要是注意顺序

参考:https://blog.csdn.net/younger_china/article/details/72904448

原文:

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 都可以使用,但是注意安装的对应版本 ,之后有时间可以好好试试]

没有评论:

发表评论