Testing¶
Tryton supports both functional and unit tests.
Testing your module¶
Functional tests¶
Functional tests are written as doctests using proteus.
Unit tests¶
Tryton provides the ModuleTestCase
class that bundles a set of tests
that are useful for every module.
Unit tests in ModuleTestCase
can be decorated with
trytond.tests.test_tryton.with_transaction()
to run the test in a
transaction.
To use it in your own module you just have to inherit from
ModuleTestCase
and set the class attribute
module
to the name of your module.
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
class MyModuleTestCase(ModuleTestCase):
"My Module Test Case"
module = 'my_module'
@with_transaction()
def test_method(self):
"Test method"
self.assertTrue(True)
Tests from this modules are found by the function
trytond.modules.my_module.tests.suite
which must return a
unittest.TestSuite
containing all the module’s tests. This function is
called by the Tryton test runner script to gather all the tests.
A typical suite()
function thus looks like this:
def suite():
suite = trytond.tests.test_tryton.suite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
MyModuleTestCase))
suite.addTests(doctest.DocFileSuite('scenario_my_module.rst',
tearDown=doctest_teardown, encoding='utf-8',
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
checker=doctest_checker))
return suite
Running your module’s tests¶
Tryton provides the script trytond/tests/run-tests.py
, just invoke it like
that:
run-tests.py -m my_module
Testing trytond¶
Extending tests¶
Python modules extending tryton core can define additional tests that should be added to the existing ones.
Those modules must create an entry point trytond.tests
. Any file in the
module path specified by this entry point starting with test_
and ending by
.py
will be imported. Each of those file must define a suite()
function
that returns a unittest.TestSuite
that will be included in the trytond test
suite. If the module from the entry point defines a register
function it
will be called when registering the test-specific models in the
trytond.pool.Pool
.
Running trytond tests¶
You should use the script trytond/tests/run-tests.py
by invoking it like
that:
run-tests.py [-c configuration]
You can use a different configuration file to check trytond against different backend.