Unit Test Quickstart
Unit Test Quickstart
This page gives some simple recipes and tips for writing unit tests in the Gramps source code tree.
First, some general procedural and structural notes
- unit tests are usually created to verify correct functional behavior of a single module of source code.
- test code goes in a test subdirectory of the subject module's directory
- the test module should be named with a suffix _test so that it can be found by automatic regression test tools.
- the leading part of the test will commonly be named the same as the basename (or a variant) of the module under test, leading, for example, to the following files
src/A/B/module.py src/A/B/test/module_test.py
- the test subdirectory can contain data or helper programs as required
- the test and such supplementary elements that are persistent will be maintained as part of the source control system.
- the test module can create and delete test data during execution. Commonly this would go in a deeper subdir, named to avoid collision with other test programs.
...more to come...
Simple Code Recipes
There are only a few firm requirements to fit into the framework. Here is a simple test module that may be considered something of a template.
import unittest
from test import test_util # this module provides support for test modules parent_dir = test_util.path_append_parent # enables the following import import MyModule this_dir = test_util.abspath data_dir = test_util.make_subdir("MyModule_test_data") class Test_top(unittest.TestCase): def test_function_x(self): ..do stuff.. self.assertTrue(expression, "message to display on failure") #see other assert and fail functions in the unittest module
..more defs for more tests, more classes for possible grouping logic..