def test_calculation_salary(self): s = practice6_mock.Salary(year=2017) s.bonus_api.bonus_price = MagicMock(return_value=1) # 해당 코드를 실행 하고 나서 결과로 1을 반환 하돌고 하는 것 self.assertEqual(s.calculation_salary(), 101) s.bonus_api.bonus_price.assert_called() s.bonus_api.bonus_price.assert_called_with(year=2017)
def test_calculation_salary_path_side_effect_error(self): # mock 로 인식 # setting # self.mock_bonus.side_effect = ConnectionRefusedError #error일 경우 처리해 줄수 있다 self.mock_bonus.side_effect = [1, 2, 3, ValueError('Bankrupt!!!')] # 복잡하지 않으면 lambda 를 하여도 된다 # error일 경우를 check를 하는 것 # do s = practice6_mock.Salary(year=2017) salary_price = s.calculation_salary() self.assertEqual(salary_price, 101) s = practice6_mock.Salary(year=2018) salary_price = s.calculation_salary() self.assertEqual(salary_price, 102) s = practice6_mock.Salary(year=2019) salary_price = s.calculation_salary() self.assertEqual(salary_price, 103) s = practice6_mock.Salary(year=200) with self.assertRaises(ValueError): s.calculation_salary()
def test_calculation_salary_path_patcher(self): # mock 로 인식 # setting self.mock_bonus.return_value = 1 # 위에 어노테이션 에 return value 를 안 넣어도됨 # do s = practice6_mock.Salary(year=2017) salary_price = s.calculation_salary() # check self.assertEqual(salary_price, 101) self.mock_bonus.assert_called()
def test_calculation_salary_path_with(self): # mock 로 인식 # setting with mock.patch('practice6_mock.ThirdPartyBonusRestApi.bonus_price' ) as mock_bonus: mock_bonus.return_value = 1 # 위에 어노테이션 에 return value 를 안 넣어도됨 # do s = practice6_mock.Salary(year=2017) salary_price = s.calculation_salary() # check self.assertEqual(salary_price, 101) mock_bonus.assert_called()
def test_calculation_salary_class(self, MockRest): # mock 로 인식 # setting # mock_rest = MockRest.return_value # 이렇게 사용해도 밑에 꺼와 동일 mock_rest = MockRest() mock_rest.bonus_price.return_value = 1 # 위에 어노테이션 에 return value 를 안 넣어도됨 mock_rest.get_api_name.return_value = 'Money' # 기존 클래스 모두 mock 가능 # do s = practice6_mock.Salary(year=2017) salary_price = s.calculation_salary() # check self.assertEqual(salary_price, 101) mock_rest.bonus_price.assert_called()
def test_calculation_salary_path_side_effect(self): # mock 로 인식 # setting def f(year): # 해당내용으로 바꿔서 사용할 수 있다 return year * 2 self.mock_bonus.side_effect = f # 위에 어노테이션 에 return value 를 안 넣어도됨 # self.mock_bonus.side_effect = lambda year: 1 # 복잡하지 않으면 lambda 를 하여도 된다 # do s = practice6_mock.Salary(year=2017) salary_price = s.calculation_salary() # check self.assertEqual(salary_price, 4134) self.mock_bonus.assert_called()
def test_calculation_salary_no_salary(self): s = practice6_mock.Salary(year=2050) s.bonus_api.bonus_price = MagicMock(return_value=0) self.assertEqual(s.calculation_salary(), 100) s.bonus_api.bonus_price.assert_not_called()