{"id":3553,"date":"2022-06-30T07:25:02","date_gmt":"2022-06-30T07:25:02","guid":{"rendered":"https:\/\/www.pythontutorial.net\/?page_id=3553"},"modified":"2022-08-12T13:59:35","modified_gmt":"2022-08-12T13:59:35","slug":"python-unit-testing","status":"publish","type":"page","link":"https:\/\/www.pythontutorial.net\/python-unit-testing\/","title":{"rendered":"Python Unit Testing"},"content":{"rendered":"\n<p>In this section, you&#8217;ll learn about unit testing in Python by using the unittest modules to make your code more robust.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='what-youll-learn'>What you&#8217;ll learn: <a href=\"#what-youll-learn\" class=\"anchor\" id=\"what-youll-learn\" title=\"Anchor for What you&#039;ll learn:\">#<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Write effective test cases using the <code>unittest<\/code> module<\/li><li>Run unit tests fast<\/li><li>Skip tests unconditionally and conditionally<\/li><li>Using test doubles including mocks, stubs, and fakes<\/li><li>Parameterize tests<\/li><li>Generate test coverage reports<\/li><\/ul>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id='introduction-to-unit-testing-in-python'>Section 1. Introduction to unit testing in Python <a href=\"#introduction-to-unit-testing-in-python\" class=\"anchor\" id=\"introduction-to-unit-testing-in-python\" title=\"Anchor for Section 1. Introduction to unit testing in Python\">#<\/a><\/h2>\n\n\n\n<p>This section introduces you to the unit testing and the unittest module. After completing this section, you&#8217;ll know how to define and execute unit tests effectively.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-unittest\/\">What is unit testing<\/a> &#8211; introduce you to the unittest testing and how to use the unittest module to perform unit tests.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-test-fixtures\/\">Test fixtures<\/a> &#8211; learn how to use test fixtures including setUp() and tearDown() to carry out the steps before and after test methods.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-unittest-skip-test\/\">Skipping tests<\/a> &#8211; guide you on how to skip a test method or test class.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-run-unittest\/\">Running unittest<\/a> &#8211; show you various commands to run unit tests.<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id='assert-methods'>Section 2. assert methods <a href=\"#assert-methods\" class=\"anchor\" id=\"assert-methods\" title=\"Anchor for Section 2. assert methods\">#<\/a><\/h2>\n\n\n\n<p>This section covers the assert methods so that you know how to each of them more effectively.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-unittest-assert\/\">assert methods<\/a> &#8211; introduce to you a brief overview of the assert methods of the <code>TestCase<\/code> class.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-assertequal\/\">assertEqual()<\/a> &#8211; test if two values are equal.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-assertalmostequal\/\">assertAlmostEqual()<\/a> &#8211; test if two values are approximately equal.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-assertis\/\">assertIs()<\/a> &#8211; test if two objects are the same.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-assertisinstance\/\">assertIsInstance()<\/a> &#8211; test if an object is an instance of a class or a tuple of classes.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-assertisnone\/\">assertIsNone()<\/a> &#8211; test if an expression is None.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-asserttrue\/\">assertTrue()<\/a> &#8211; test if an expression is True.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-assertin\/\">assertIn()<\/a> &#8211; test if a member is in a container.<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id='test-doubles'>Section 3. Test doubles <a href=\"#test-doubles\" class=\"anchor\" id=\"test-doubles\" title=\"Anchor for Section 3. Test doubles\">#<\/a><\/h2>\n\n\n\n<p>This section introduces to you the test doubles to decouple the system under test code from the rest of the system so that code can be tested in isolation.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-unittest-mock\/\">Mock<\/a> &#8211; learn how to use the Mock class to mimic behaviors of another function or class.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-patch\/\">patch()<\/a> &#8211; show you how to use the patch() to temporarily replace an object with another object for testing.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-stubs\/\">Stubs<\/a> &#8211; show you how to use the MagicMock class &amp; patch() to create stubs.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-mock-requests\/\">Mocking requests module<\/a> &#8211; learn how to mock the requests module to test an API call using the unittest module.<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id='test-coverage-parameterized-tests'>Section 4. Test coverage &amp; Parameterized tests <a href=\"#test-coverage-parameterized-tests\" class=\"anchor\" id=\"test-coverage-parameterized-tests\" title=\"Anchor for Section 4. Test coverage &amp; Parameterized tests\">#<\/a><\/h2>\n\n\n\n<p>This section introduces you to the test coverage and how to define parameterized tests using the <code>subTest()<\/code> context manager.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-unittest-coverage\/\">Generating test coverage reports<\/a> &#8211; learn about test coverage and how to generate the test coverage report using the coverage module.<\/li><li><a href=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/python-unittest-subtest\/\">Defining parameterized tests using subTest() <\/a>&#8211; show you how to define parameterized tests\u00a0using the unittest&#8217;s subTest() context manager.<\/li><\/ul>\n<\/div><\/div>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"3553\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/\"\n\t\t\t\tdata-post-title=\"Python Unit Testing\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"3553\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/python-unit-testing\/\"\n\t\t\t\tdata-post-title=\"Python Unit Testing\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\t\t\t<input type=\"button\" name=\"wth-submit\" class=\"wth-btn wth-btn-submit\" id=\"wth-submit\" \/>\n\t\t\t<input type=\"button\" class=\"wth-btn wth-btn-cancel\" value=\"Cancel\" \/>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This section shows you how to use the Python unittest module to perform unit testing to make your code more robust.<\/p>\n","protected":false},"author":1,"featured_media":3665,"parent":0,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3553","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/3553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/comments?post=3553"}],"version-history":[{"count":0,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/3553\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/media\/3665"}],"wp:attachment":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/media?parent=3553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}