????pythonд???????????????unittest??mock???????????????????coverage????????nose?????е????????????????????γ??汾?????????????????????????????顣
????Unittest
????unittest?????????????????
????????????unittest.TestCase
????????????????????????test???????????????????????????У??????
???????????????setUp/tearDown???????case?????/?????У?setUpClass/tearDownClass????@classmethod??????????????????????????
?????????????main???????????unittest.main()???????????python??????????
????Mock
???????????????????????mock????????????????????
????1. Mock?????????????кü???????????????????????????????????????

 

def multiple(a?? b):
return a*b
class TestProducer(unittest.TestCase):
def setUp(self):
self.calculator = Calculator()
@mock.patch('multiple')
def test_multiple(self?? mock_multiple):
mock_multiple.return_value = 3
self.assertEqual(multiple(8?? 14)?? 3)

????2. Mock???????????????

class Calculator(object):
def add(self?? a?? b):
return a+b
class TestProducer(unittest.TestCase):
def setUp(self):
self.calculator = Calculator()
@mock.patch.object(Calculator?? 'add')
def test_add(self?? mock_add):
mock_add.return_value = 3
self.assertEqual(self.calculator.add(8?? 14)?? 3)
????3. ??Mock???????α????÷????????????1??2?е??????ε??????????????
class TestProducer(unittest.TestCase):
@mock.patch.object(Calculator?? 'add')
def test_effect(self?? mock_add):
mock_add.side_effect = [1?? 2?? 3]
self.assertEqual(self.calculator.add(8?? 14)?? 1)
self.assertEqual(self.calculator.add(8?? 14)?? 2)
self.assertEqual(self.calculator.add(8?? 14)?? 3)