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 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)
del ModuleTestCase
Note
The ModuleTestCase
must be deleted to not be discovered by unittest
as it fails to run without module declaration.
Running trytond’s tests¶
You can run a specific test file using unittest
command line like:
$ python -m unittest trytond.tests.test_tools
To run all trytond’s tests using discover of unittest
with:
$ python -m unittest discover -s trytond.tests
To run all modules tests:
$ python -m unittest discover -s trytond.modules
Running your module’s tests¶
You just need to replace the directory path with the one of your module:
$ python -m unittest discover -s trytond.modules.my_module.tests
Extending trytond’s tests¶
Python modules extending trytond
core can define additional classes to
register in tests
module.
Those modules must create an entry point trytond.tests
which defines a
register
function to be called with the module name.
Testing options¶
Tryton runs tests against the configured database backend.
You can specify the name of the database to use via the environment variable
DB_NAME
.
Otherwise it generates a random name.
A configuration file can be used by setting its path to the environment
variable TRYTOND_CONFIG
.
The tests recreate frequently the database. You can accelerate the creation by
setting a cache directory in DB_CACHE
environment which will be used to
dump and restore initial databases backups.