Python unittest - unit test example | DigitalOcean (2024)

Today we will learn about python unittest and look through python unit test example programs. In previous tutorial we learned about python zip function.

Python unittest

Python unittest module is used to test a unit of source code. Suppose, you need to test your project. You know what kind of data the function will return. After writing huge code, you need to check it whether the output is correct or not. Normally, what we do is printing the output and match it with the reference output file or check the output manually. To reduce this pain, Python has introduced unittest module. Using this module you can check the output of the function by some simple code. In this tutorial we will discuss about basic usage of Python unittest module and write some python unit test cases to test a class functions.

Python Unit Test Example Source

First of all we have to write some code to unit test them. We will have a Python class. The main purpose of the class is to store and retrieve person’s name. So, we write set_name() function to store the data and get_name() function to retrieve name from the class.

class Person: name = [] def set_name(self, user_name): self.name.append(user_name) return len(self.name) - 1 def get_name(self, user_id): if user_id >= len(self.name): return 'There is no such user' else: return self.name[user_id]if __name__ == '__main__': person = Person() print('User Abbas has been added with id ', person.set_name('Abbas')) print('User associated with id 0 is ', person.get_name(0))

We named the class file as Person.py. And the output of the above code will be like below.

$ python3.6 Person.py User Abbas has been added with id 0User associated with id 0 is Abbas$

Python unittest structure

Now, let’s learn how to code for unit testing. An individual testcase is created by subclassing unittest.TestCase. By overriding or adding appropriate functions, we can add logic to test. The following code will be succeeded if a is equals to b.

import unittestclass Testing(unittest.TestCase): def test_string(self): a = 'some' b = 'some' self.assertEqual(a, b) def test_boolean(self): a = True b = True self.assertEqual(a, b)if __name__ == '__main__': unittest.main()

How to run python unittest module

If you’re using PyCharm IDE, you can simply press ctrl+shift+F10 to run unittest module. Otherwise you can use command prompt to run this module. For example, we named the file for unit-testing as Basic_Test.py. So the command to run python unittest will be: $python3.6 -m unittest Basic_Test.Testing If you want to see the verbose, then the command will be; $python3.6 -m unittest -v Basic_Test.Testing By using the PyCharm, we get the below output. Python unittest - unit test example | DigitalOcean (1)

This unittest has 3 possible outcomes. They are mentioned below:

  1. OK: If all test cases are passed, the output shows OK.
  2. Failure: If any of test cases failed and raised an AssertionError exception
  3. Error: If any exception other than AssertionError exception is raised.

There are several function under unittest module. They are listed below.

MethodChecks that
assertEqual(a,b)a==b
assertNotEqual(a,b)a != b
assertTrue(x)bool(x) is True
assertFalse(x)bool(x) is False
assertIs(a,b)a is b
assertIs(a,b)a is b
assertIsNot(a, b)a is not b
assertIsNone(x)x is None
assertIsNotNone(x)x is not None
assertIn(a, b)a in b
assertNotIn(a, b)a not in b
assertIsInstance(a, b)isinstance(a, b)
assertNotIsInstance(a, b)not isinstance(a, b)

Python unit test example

Now it’s time to write unit tests for our source class Person. In this class we have implemented two function - get_name() and set_name(). Now, we will test those function using unittest. So we have designed two test cases for those two function. Have a look at the following code, you will understand it easily.

import unittest# This is the class we want to test. So, we need to import itimport Person as PersonClassclass Test(unittest.TestCase): """ The basic class that inherits unittest.TestCase """ person = PersonClass.Person() # instantiate the Person Class user_id = [] # variable that stores obtained user_id user_name = [] # variable that stores person name # test case function to check the Person.set_name function def test_0_set_name(self): print("Start set_name test\n") """ Any method which starts with ``test_`` will considered as a test case. """ for i in range(4): # initialize a name name = 'name' + str(i) # store the name into the list variable self.user_name.append(name) # get the user id obtained from the function user_id = self.person.set_name(name) # check if the obtained user id is null or not self.assertIsNotNone(user_id) # null user id will fail the test # store the user id to the list self.user_id.append(user_id) print("user_id length = ", len(self.user_id)) print(self.user_id) print("user_name length = ", len(self.user_name)) print(self.user_name) print("\nFinish set_name test\n") # test case function to check the Person.get_name function def test_1_get_name(self): print("\nStart get_name test\n") """ Any method that starts with ``test_`` will be considered as a test case. """ length = len(self.user_id) # total number of stored user information print("user_id length = ", length) print("user_name length = ", len(self.user_name)) for i in range(6): # if i not exceed total length then verify the returned name if i < length: # if the two name not matches it will fail the test case self.assertEqual(self.user_name[i], self.person.get_name(self.user_id[i])) else: print("Testing for get_name no user test") # if length exceeds then check the 'no such user' type message self.assertEqual('There is no such user', self.person.get_name(i)) print("\nFinish get_name test\n")if __name__ == '__main__': # begin the unittest.main() unittest.main()

Note that the unittest module executes the test functions in the order of their name, not in the order they are defined. And since we want our set_name test to execute first, we have named our test case functions as test_0_set_name and test_1_get_name.

Python Unit Test Example Output

Below images show the output produced by our unit test program - both in normal mode and in verbose mode. Python unittest - unit test example | DigitalOcean (2) Python unittest - unit test example | DigitalOcean (3)

$ python3.6 -m unittest -v PersonTest.Testtest_0_set_name (PersonTest.Test) ... Start set_name testuser_id length = 4[0, 1, 2, 3]user_name length = 4['name0', 'name1', 'name2', 'name3']Finish set_name testoktest_1_get_name (PersonTest.Test) ... Start get_name testuser_id length = 4user_name length = 4Testing for get_name no user testTesting for get_name no user testFinish get_name testok----------------------------------------------------------------------Ran 2 tests in 0.000sOK$

That’s all about Python unittest tutorial. To learn more, read the Official Documentation. For any further query please use the comment box. :)

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Python unittest - unit test example | DigitalOcean (2024)

References

Top Articles
Walmart Hair Salon Fayetteville Wv
The Springfield Daily Republican from Springfield, Massachusetts
Genesis Parsippany
Manhattan Prep Lsat Forum
80 For Brady Showtimes Near Marcus Point Cinema
The Potter Enterprise from Coudersport, Pennsylvania
Sissy Transformation Guide | Venus Sissy Training
Fusion
Jesus Revolution Showtimes Near Chisholm Trail 8
Compare the Samsung Galaxy S24 - 256GB - Cobalt Violet vs Apple iPhone 16 Pro - 128GB - Desert Titanium | AT&T
Where's The Nearest Wendy's
Nexus Crossword Puzzle Solver
Power Outage Map Albany Ny
R/Altfeet
Nj Scratch Off Remaining Prizes
Blog:Vyond-styled rants -- List of nicknames (blog edition) (TouhouWonder version)
Huge Boobs Images
Sivir Urf Runes
Wisconsin Women's Volleyball Team Leaked Pictures
50 Shades Darker Movie 123Movies
Metro Pcs.near Me
What Is Vioc On Credit Card Statement
Ein Blutbad wie kein anderes: Evil Dead Rise ist der Horrorfilm des Jahres
Kcwi Tv Schedule
Conan Exiles Sorcery Guide – How To Learn, Cast & Unlock Spells
Clare Briggs Guzman
Used Safari Condo Alto R1723 For Sale
Azur Lane High Efficiency Combat Logistics Plan
Craigslist Illinois Springfield
1145 Barnett Drive
Jackie Knust Wendel
Uno Fall 2023 Calendar
Desales Field Hockey Schedule
Laveen Modern Dentistry And Orthodontics Laveen Village Az
Devargasfuneral
EST to IST Converter - Time Zone Tool
Boone County Sheriff 700 Report
Cygenoth
Cnp Tx Venmo
Nail Salon Open On Monday Near Me
Frigidaire Fdsh450Laf Installation Manual
Booknet.com Contract Marriage 2
Is Ameriprise A Pyramid Scheme
Gas Buddy Il
Access to Delta Websites for Retirees
Cara Corcione Obituary
Used Auto Parts in Houston 77013 | LKQ Pick Your Part
Tyrone Dave Chappelle Show Gif
Grandma's Portuguese Sweet Bread Recipe Made from Scratch
Tenichtop
Loss Payee And Lienholder Addresses And Contact Information Updated Daily Free List Bank Of America
Elizabethtown Mesothelioma Legal Question
Latest Posts
Article information

Author: Nathanael Baumbach

Last Updated:

Views: 5989

Rating: 4.4 / 5 (75 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Nathanael Baumbach

Birthday: 1998-12-02

Address: Apt. 829 751 Glover View, West Orlando, IN 22436

Phone: +901025288581

Job: Internal IT Coordinator

Hobby: Gunsmithing, Motor sports, Flying, Skiing, Hooping, Lego building, Ice skating

Introduction: My name is Nathanael Baumbach, I am a fantastic, nice, victorious, brave, healthy, cute, glorious person who loves writing and wants to share my knowledge and understanding with you.