рдкрд╛рдпрдерди рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ: рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдХреНрдпреВрдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдпреВрдирд┐рдЯ рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рднреА рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╡реЗ рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ рдЬрдм рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВ рдпрд╛ рдореМрдЬреВрджрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдБрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЙрдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдкрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдЖрдЬ рд╣рдо рдмреИрдХрдПрдВрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣реА рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреИрд▓рдХреБрд▓реЗрдЯрд░), рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, TestCalculator.py рдХрд╛ рдЙрдкрдпреЛрдЧ TestCalculator.py )ред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрд╛ рд╣реИ: рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрд╛рд╡, рдЧреБрдгрд╛ рдФрд░ рднрд╛рдЧред

рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ( Calculator.py ):

 #A simple calculator class Calculator: #empty constructor def __init__(self): pass #add method - given two numbers, return the addition def add(self, x1, x2): return x1 + x2 #multiply method - given two numbers, return the #multiplication of the two def multiply(self, x1, x2): return x1 * x2 #subtract method - given two numbers, return the value #of first value minus the second def subtract(self, x1, x2): return x1 - x2 #divide method - given two numbers, return the value #of first value divided by the second def divide(self, x1, x2): if x2 != 0: return x1/x2 

рдЕрдм рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд┐рдпреЛрдЬрд┐рдд рд╣реИред

рдкрд╛рдпрдерди рдЖрдорддреМрд░ рдкрд░ рд╕рдмрд╕реЗ unittest рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ:



tearDown() setUp() рдФрд░ tearDown() рдорд╛рдирдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдЬреЛ рдХрд┐ tearDown() рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИрдВ (рд╡реЗ unittest.TestCase рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ)ред рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрди рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдпрд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ TestCalculator.py ред

 import unittest from Calculator import Calculator #Test cases to test Calulator methods #You always create a child class derived from unittest.TestCase class TestCalculator(unittest.TestCase): #setUp method is overridden from the parent class TestCase def setUp(self): self.calculator = Calculator() #Each test method starts with the keyword test_ def test_add(self): self.assertEqual(self.calculator.add(4,7), 11) def test_subtract(self): self.assertEqual(self.calculator.subtract(10,5), 5) def test_multiply(self): self.assertEqual(self.calculator.multiply(3,7), 21) def test_divide(self): self.assertEqual(self.calculator.divide(10,2), 5) # Executing the tests in the above test case class if __name__ == "__main__": unittest.main() 

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЙрдкрд╕рд░реНрдЧ рдкрд░реАрдХреНрд╖рдг (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ TestCalculator) рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реВрдВред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ unittest.TestCase рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ред

рдЬрдм рднреА рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реЗрдЯрдЕрдк () рд╡рд┐рдзрд┐ рдХреЛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмрд╕ рд╡рд░реНрдЧ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрдХреНрд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдореВрд▓ рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рднреА рдХрд░реЗрдВрдЧреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП test_xxx рд╡рд┐рдзрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВрдЧреЗред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрд╕рд░реНрдЧ test_ рд╢реБрд░реВ test_ ред рдпрд╣ рдЕрдЬрдЧрд░ рдХреЛ рдПрдХрддрд░рдлрд╛ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ, рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд assertEqual рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рддрд░реАрдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдХрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ TestCalculator рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИред рдпрд╣ рдХрдХреНрд╖рд╛ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

 python TestCalculator.py -v 


рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рдорд╛рди рдирд┐рд╖реНрдХрд░реНрд╖ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 test_add (__main__.TestCalculator) ... ok test_divide (__main__.TestCalculator) ... ok test_multiply (__main__.TestCalculator) ... ok test_subtract (__main__.TestCalculator) ... ok -------------------------------------------------------------------- Ran 4 tests in 0.000s OK 

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдЖрдЗрдП 5 рд╕реЗ 6 рддрдХ test_divide рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдорд╛рди рдХреЛ test_divide (5 рд╕рд╣реА рдореВрд▓реНрдп рд╣реИ, рдЕрдм рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ рдЕрдЧрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЬрд╛рдВрдЪреЗрдВред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ!)

 import unittest from Calculator import Calculator #Test cases to test Calulator methods #You always create a child class derived from unittest.TestCase class class TestCalculator(unittest.TestCase): #setUp method overridden from the parent class TestCase def setUp(self): self.calculator = Calculator() ... def test_divide(self): self.assertEqual(self.calculator.divide(10,2), 6) # Executing the tests in the above test case class if __name__ == "__main__": unittest.main() 

рдЬрдм рдЖрдк рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ:

 test_add (__main__.TestCalculator) ... ok test_divide (__main__.TestCalculator) ... FAIL test_multiply (__main__.TestCalculator) ... ok test_subtract (__main__.TestCalculator) ... ok ==================================================================== FAIL: test_divide (__main__.TestCalculator) -------------------------------------------------------------------- Traceback (most recent call last): File "TestCalculator.py", line 23, in test_divide self.assertEqual(self.calculator.divide(10,2), 6) AssertionError: 5.0 != 6 -------------------------------------------------------------------- Ran 4 tests in 0.001s FAILED (failures=1) 

рдпрд╣ рдпрд╣рд╛рдВ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ 4 рдореЗрдВ рд╕реЗ 3 рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд░рд╣реЗ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рд╕рд╣реА рд╣реИ, рдЕрд░реНрдерд╛рдд рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдПрдХ рдРрд╕реЗ рдХрд╛рд░реНрдп рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi481806/


All Articles