home
/
courses
/
python-tutorial-for-beginners-13-unit-testing-your-code-with-the-unittest-module
Python Tutorial for Beginners - 13. Unit Testing Your Code with the unittest Module
Run Code 1 in Python
Run Code 2 in Python
Run Code 3 in Python
Run Code 4 in Python
Run Code 5 in Python
Run Code 6 in Python
Run Code 1 in Python
# file: 'app1.py'
def add ( x , y ):
"""Add Function"""
return x + y
def subtract ( x , y ):
"""Subtract Function"""
return x - y
def multiply ( x , y ):
"""Multiply Function"""
return x * y
def divide ( x , y ):
"""Divide Function"""
if y == 0 :
raise ValueError ( 'Can not divide by zero!' )
return x / y
Run Code 2 in Python
# file: 'app2.py'
import unittest
import calc
class TestCalc ( unittest . TestCase ):
def test_add ( self ):
self . assertEqual ( calc . add ( 10 , 5 ), 15 )
self . assertEqual ( calc . add ( - 1 , 1 ), 0 )
self . assertEqual ( calc . add ( - 1 , - 1 ), - 2 )
def test_subtract ( self ):
self . assertEqual ( calc . subtract ( 10 , 5 ), 5 )
self . assertEqual ( calc . subtract ( - 1 , 1 ), - 2 )
self . assertEqual ( calc . subtract ( - 1 , - 1 ), 0 )
def test_multiply ( self ):
self . assertEqual ( calc . multiply ( 10 , 5 ), 50 )
self . assertEqual ( calc . multiply ( - 1 , 1 ), - 1 )
self . assertEqual ( calc . multiply ( - 1 , - 1 ), 1 )
def test_divide ( self ):
self . assertEqual ( calc . divide ( 10 , 5 ), 2 )
self . assertEqual ( calc . divide ( - 1 , 1 ), - 1 )
self . assertEqual ( calc . divide ( - 1 , - 1 ), 1 )
self . assertEqual ( calc . divide ( 5 , 2 ), 2.5 )
with self . assertRaises ( ValueError ):
calc . divide ( 10 , 0 )
if __name__ == '__main__' :
unittest . main ()
##run
#python -m unittest test_calc.py
##doc
#https://docs.python.org/3/library/unittest.html#unittest.TestCase.debug
Run Code 3 in Python
# file: 'employee.py'
import requests
class Employee :
"""A sample Employee class"""
raise_amt = 1.05
def __init__ ( self , first , last , pay ):
self . first = first
self . last = last
self . pay = pay
@ property
def email ( self ):
return '{}.{}@email.com' . format ( self . first , self . last )
@ property
def fullname ( self ):
return '{} {}' . format ( self . first , self . last )
def apply_raise ( self ):
self . pay = int ( self . pay * self . raise_amt )
def monthly_schedule ( self , month ):
response = requests . get ( f 'http://company.com/ { self . last } / { month } ' )
if response . ok :
return response . text
else :
return 'Bad Response!'
Run Code 4 in Python
# file: 'test_employee.py'
import unittest
from employee import Employee
class TestEmployee ( unittest . TestCase ):
def test_email ( self ):
emp_1 = Employee ( 'Corey' , 'Schafer' , 50000 )
emp_2 = Employee ( 'Sue' , 'Smith' , 60000 )
self . assertEqual ( emp_1 . email , 'Corey.Schafer@email.com' )
self . assertEqual ( emp_2 . email , 'Sue.Smith@email.com' )
emp_1 . first = 'John'
emp_2 . first = 'Jane'
self . assertEqual ( emp_1 . email , 'John.Schafer@email.com' )
self . assertEqual ( emp_2 . email , 'Jane.Smith@email.com' )
def test_fullname ( self ):
emp_1 = Employee ( 'Corey' , 'Schafer' , 50000 )
emp_2 = Employee ( 'Sue' , 'Smith' , 60000 )
self . assertEqual ( emp_1 . fullname , 'Corey Schafer' )
self . assertEqual ( emp_2 . fullname , 'Sue Smith' )
emp_1 . first = 'John'
emp_2 . first = 'Jane'
self . assertEqual ( emp_1 . fullname , 'John Schafer' )
self . assertEqual ( emp_2 . fullname , 'Jane Smith' )
def test_apply_raise ( self ):
emp_1 = Employee ( 'Corey' , 'Schafer' , 50000 )
emp_2 = Employee ( 'Sue' , 'Smith' , 60000 )
emp_1 . apply_raise ()
emp_2 . apply_raise ()
self . assertEqual ( emp_1 . pay , 52500 )
self . assertEqual ( emp_2 . pay , 63000 )
if __name__ == '__main__' :
unittest . main ()
Run Code 5 in Python
# file: 'test_employee.py'
###### With Prints ######
import unittest
from employee import Employee
class TestEmployee ( unittest . TestCase ):
def setUp ( self ):
print ( 'setUp' )
self . emp_1 = Employee ( 'Corey' , 'Schafer' , 50000 )
self . emp_2 = Employee ( 'Sue' , 'Smith' , 60000 )
def tearDown ( self ):
print ( 'tearDown \n ' )
def test_email ( self ):
print ( 'test_email' )
self . assertEqual ( self . emp_1 . email , 'Corey.Schafer@email.com' )
self . assertEqual ( self . emp_2 . email , 'Sue.Smith@email.com' )
self . emp_1 . first = 'John'
self . emp_2 . first = 'Jane'
self . assertEqual ( self . emp_1 . email , 'John.Schafer@email.com' )
self . assertEqual ( self . emp_2 . email , 'Jane.Smith@email.com' )
def test_fullname ( self ):
print ( 'test_fullname' )
self . assertEqual ( self . emp_1 . fullname , 'Corey Schafer' )
self . assertEqual ( self . emp_2 . fullname , 'Sue Smith' )
self . emp_1 . first = 'John'
self . emp_2 . first = 'Jane'
self . assertEqual ( self . emp_1 . fullname , 'John Schafer' )
self . assertEqual ( self . emp_2 . fullname , 'Jane Smith' )
def test_apply_raise ( self ):
print ( 'test_apply_raise' )
self . emp_1 . apply_raise ()
self . emp_2 . apply_raise ()
self . assertEqual ( self . emp_1 . pay , 52500 )
self . assertEqual ( self . emp_2 . pay , 63000 )
if __name__ == '__main__' :
unittest . main ()
Run Code 6 in Python
# file: 'app6.py'
import unittest
from unittest.mock import patch
from employee import Employee
class TestEmployee ( unittest . TestCase ):
@ classmethod
def setUpClass ( cls ):
print ( 'setupClass' )
@ classmethod
def tearDownClass ( cls ):
print ( 'teardownClass' )
def setUp ( self ):
print ( 'setUp' )
self . emp_1 = Employee ( 'Corey' , 'Schafer' , 50000 )
self . emp_2 = Employee ( 'Sue' , 'Smith' , 60000 )
def tearDown ( self ):
print ( 'tearDown \n ' )
def test_email ( self ):
print ( 'test_email' )
self . assertEqual ( self . emp_1 . email , 'Corey.Schafer@email.com' )
self . assertEqual ( self . emp_2 . email , 'Sue.Smith@email.com' )
self . emp_1 . first = 'John'
self . emp_2 . first = 'Jane'
self . assertEqual ( self . emp_1 . email , 'John.Schafer@email.com' )
self . assertEqual ( self . emp_2 . email , 'Jane.Smith@email.com' )
def test_fullname ( self ):
print ( 'test_fullname' )
self . assertEqual ( self . emp_1 . fullname , 'Corey Schafer' )
self . assertEqual ( self . emp_2 . fullname , 'Sue Smith' )
self . emp_1 . first = 'John'
self . emp_2 . first = 'Jane'
self . assertEqual ( self . emp_1 . fullname , 'John Schafer' )
self . assertEqual ( self . emp_2 . fullname , 'Jane Smith' )
def test_apply_raise ( self ):
print ( 'test_apply_raise' )
self . emp_1 . apply_raise ()
self . emp_2 . apply_raise ()
self . assertEqual ( self . emp_1 . pay , 52500 )
self . assertEqual ( self . emp_2 . pay , 63000 )
def test_monthly_schedule ( self ):
with patch ( 'employee.requests.get' ) as mocked_get :
mocked_get . return_value . ok = True
mocked_get . return_value . text = 'Success'
schedule = self . emp_1 . monthly_schedule ( 'May' )
mocked_get . assert_called_with ( 'http://company.com/Schafer/May' )
self . assertEqual ( schedule , 'Success' )
mocked_get . return_value . ok = False
schedule = self . emp_2 . monthly_schedule ( 'June' )
mocked_get . assert_called_with ( 'http://company.com/Smith/June' )
self . assertEqual ( schedule , 'Bad Response!' )
if __name__ == '__main__' :
unittest . main ()
# sudo pip3 install requests
Comments 💬
© 2018 - 2023 Milovan Tomašević. All rights reserved.
Impress
|
Cookies Policy
Powered by MT v9.1.4