23.3.3 Re-using old test code
Some users will find that they have existing test code that they would
like to run from unittest, without converting every old test
function to a TestCase subclass.
For this reason, unittest provides a FunctionTestCase
class. This subclass of TestCase can be used to wrap an existing
test function. Set-up and tear-down functions can also be provided.
Given the following test function:
def testSomething():
something = makeSomething()
assert something.name is not None
# ...
one can create an equivalent test case instance as follows:
testcase = unittest.FunctionTestCase(testSomething)
If there are additional set-up and tear-down methods that should be
called as part of the test case's operation, they can also be provided
like so:
testcase = unittest.FunctionTestCase(testSomething,
setUp=makeSomethingDB,
tearDown=deleteSomethingDB)
To make migrating existing test suites easier, unittest
supports tests raising AssertionError to indicate test failure.
However, it is recommended that you use the explicit
TestCase.fail*() and TestCase.assert*() methods instead,
as future versions of unittest may treat AssertionError
differently.
Note:
Even though FunctionTestCase can be used to quickly convert
an existing test base over to a unittest-based system, this
approach is not recommended. Taking the time to set up proper
TestCase subclasses will make future test refactorings infinitely
easier.
Release 2.5.2, documentation updated on 21st February, 2008.
See About this document... for information on suggesting changes.
|