Python Module unittest: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 66: Line 66:
====<tt>assertRaises()</tt>====
====<tt>assertRaises()</tt>====
{{External|https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises}}
{{External|https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises}}
=Operations=
Running tests from command line:
<syntaxhighlight lang='py'>
</syntaxhighlight>

Revision as of 02:51, 12 July 2022

External

Internal

Overview

unittest vs. pytest

TODO: https://www.pythonpool.com/python-unittest-vs-pytest/

Concepts

Test Fixture

A test fixture represents the code needed to prepare the context for running one or more tests (create temporary databases, directories, etc.), and any associated cleanup actions.

Test Case

A test case is the individual unit of testing. In unittest, the test cases inherit from the base class TestCase.

Test Suite

A collection of test cases, test suites or both.

Test Runner

The test runner is the component that orchestrates the execution of tests and provides the outcomes to the user.

unittest.mock

API

TestCase

A simple test case can be implemented by subclassing TestCase as shown below. The individual test methods are have names that start with test. This is a naming convention that informs the test runner about which methods to invoke as tests.

from unittest import TestCase

from my_code_to_test import some_function


class TestMyCode(TestCase):

    def test_empty(self):
        self.assertFalse(some_function(''))

    def test_lower_case(self):
        self.assertEqual('A', some_function('a'))

    def test_upper_case(self):
        self.assertEqual('A', some_function('A'))

    def test_exception(self):
        with self.assertRaises(ValueError):
            some_function('special')

Setup and Teardown

setUp() and tearDown() define instructions to be executed before and after each test method execution.

setUp()

tearDown()

Assertion Methods

These methods are used instead of the assert statement so the test runner can accumulate all test results and produce a report. Really? pytest can produce reports and it uses assert.

assertEquals()

https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertEqual

assertNotEqual()

assertTrue()

https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTrue

assertFalse()

https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertFalse

assertRaises()

https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises

Operations

Running tests from command line: