Files
tryton/trytond/doc/ref/tests.rst
T

185 lines
5.0 KiB
ReStructuredText

.. _ref-test:
.. module:: trytond.tests.test_tryton
Tests
=====
.. attribute:: DB_NAME
The name of the database to use for testing.
Its value is taken from the environment variable of the same name.
.. attribute:: USER
The user id used to test the transactions
.. attribute:: CONTEXT
The context used to test the transactions
.. attribute:: TEST_NETWORK
If false, tests that requires network are skipped.
Its value is taken from the environment variable of the same name.
.. function:: activate_module(name)
Activate the named module for the tested database.
In case database does not exist and the ``DB_CACHE`` environment variable is
set then Tryton restores a backup found in the directory pointed by
``DB_CACHE``.
``DB_CACHE`` can also be set to the value ``postgresql://``, in that case
Tryton create the database using the template found on the server.
Otherwise it procees to the creation of the database and the activation of
the module.
``DB_CACHE_JOBS`` environment variable defines the number of jobs used for
dump and restore operations.
The default value is the number of CPU.
TestCase
--------
.. class:: TestCase()
A subclass of `unittest.TestCase`_ for testing non-module Tryton.
It setups warning filters based on ``TEST_PYTHONWARNINGS`` environment
variable.
ModuleTestCase
--------------
.. class:: ModuleTestCase()
A subclass of :class:`TestCase` that tests a Tryton module.
Some tests are included to ensure that the module works properly.
It creates a temporary database with the module activated in setUpClass_ and
drops it in the tearDownClass_ method.
.. attribute:: ModuleTestCase.module
Name of the tested module.
.. attribute:: ModuleTestCase.extras
A list of extra modules to activate
.. attribute:: ModuleTestCase.language
The language to activate.
Default value is ``en``.
RouteTestCase
-------------
.. class:: RouteTestCase()
A subclass of :class:`TestCase` to test Tryton routes.
It creates a temporary database with the module activated in setUpClass_ and
drops it in the tearDownClass_ method.
.. attribute:: RouteTestCase.module
Name of the tested module.
.. attribute:: RouteTestCase.extras
A list of extra modules to activate
.. attribute:: RouteTestCase.language
The language to activate.
Default value is ``en``.
.. attribute:: RouteTestCase.db_name
Returns the name of the database
.. classmethod:: RouteTestCase.setUpDatabase()
A method called by setUpClass_ after activating the modules in a
:class:`~trytond.transaction.Transaction`.
It is used to setup data in the database.
.. method:: RouteTestCase.client()
Return a client to simulate requests to the WSGI application.
.. _`unittest.TestCase`: https://docs.python.org/library/unittest.html#test-cases
.. _setUpClass: https://docs.python.org/library/unittest.html#unittest.TestCase.setUpClass
.. _tearDownClass: https://docs.python.org/library/unittest.html#unittest.TestCase.tearDownClass
Helpers
-------
.. function:: with_transaction(user=1, context=None)
Return a decorator to run a test case inside a
:class:`~trytond.transaction.Transaction`.
It is rolled back and the cache cleared at the end of the test.
doctest helpers
---------------
.. function:: doctest_setup
Prepare the run of the `doctest`_ by creating a database and dropping it
beforehand if necessary.
This function should be used as the ``setUp`` parameter.
.. deprecated:: 4.2
The ``doctest_setup`` function should not be used anymore to set up
:py:func:`~doctest.DocFileSuite`.
New modules should use :func:`~trytond.tests.tools.activate_modules`
instead.
.. function:: doctest_teardown()
Clean up after the run of the doctest_ by dropping the database.
It should be used as ``tearDown`` parameter when creating a
``DocFileSuite``.
.. attribute:: doctest_checker
A specialized doctest checker to ensure the Python compatibility.
.. function:: load_doc_tests(name, path, loader, tests, pattern[, skips])
An helper that follows the ``load_tests`` protocol to load as
:py:class:`~doctest.DocTest` all ``*.rst`` files in ``directory``,
with the module ``name`` and the ``path`` to the module file from which the
doc tests are registered.
If a file with the same name but the extension ``.json`` exists, the test is
registered for each globals defined in the JSON list.
``skips`` constains the name of the scenario to skip.
.. function:: suite()
A function returning a subclass of ``unittest.TestSuite`` that drops the
database if it does not exist prior to the run of the tests.
.. _doctest: https://docs.python.org/library/doctest.html
.. module:: trytond.tests.tools
Tools
-----
.. function:: activate_modules(modules)
Activate a list of ``modules`` for scenario based on proteus doctests.
.. function:: set_user(user, config)
Set the user of the ``config`` proteus connection to ``user``.
The module exposes also all the assert methods of :py:class:`unittest.TestCase`
that can be run doctest scenario.