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.