Unit Test Quickstart

From Gramps
Revision as of 10:54, 6 November 2007 by Jgsack (talk | contribs) (New page: == 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 ===...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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..