Skip to main content

Odoo Test Helper

Project description

License: LGPL-3 https://badge.fury.io/py/odoo-test-helper.svg

odoo-test-helper is toolbox for writing odoo test

Loading Fake models

Sometime you build an abstract module that can be use by many modules. In such case, if you want to test it with real records you need to register real models.

One solution is to create a module_test module with a little implementation that use your abstract model.

One other solution is define test only models and load them in tests. This lib makes this possible and easy.

Example

There is an example of test here:

This example load the class ResPartner from the file:

Real implementation case can be found in the following module

How to import

Be carefull importing fake class must be done in the right way. Importing a file will automatically add all the class in the “module_to_models” variable. The import must be done after the backup !

Wrong way

from odoo.tests import SavepointCase

from odoo_test_helper import FakeModelLoader

# The fake class is imported here !! It's wrong
# And be carefull even if you only import ResPartner
# all class in the file models will be proceded by odoo
# so no **direct import** of a file that contain fake model
from .models import ResPartner





class TestMixin(SavepointCase):
    @classmethod
    def setUpClass(cls):
        super(TestMixin, cls).setUpClass()
        cls.loader = FakeModelLoader(cls.env, cls.__module__)
        cls.loader.backup_registry()

        cls.loader.update_registry((ResPartner,))

    @classmethod
    def tearDownClass(cls):
        cls.loader.restore_registry()
        super(TestMixin, cls).tearDownClass()

    def test_create(self):
        partner = self.env["res.partner"].create({"name": "BAR", "test_char": "youhou"})
        self.assertEqual(partner.name, "FOO-BAR")
        self.assertEqual(partner.test_char, "youhou")

Right Way

from odoo.tests import SavepointCase

from odoo_test_helper import FakeModelLoader


class TestMixin(SavepointCase):
    @classmethod
    def setUpClass(cls):
        super(TestMixin, cls).setUpClass()
        cls.loader = FakeModelLoader(cls.env, cls.__module__)
        cls.loader.backup_registry()

        # The fake class is imported here !! After the backup_registry
        from .models import ResPartner

        cls.loader.update_registry((ResPartner,))

    @classmethod
    def tearDownClass(cls):
        cls.loader.restore_registry()
        super(TestMixin, cls).tearDownClass()

    def test_create(self):
        partner = self.env["res.partner"].create({"name": "BAR", "test_char": "youhou"})
        self.assertEqual(partner.name, "FOO-BAR")
        self.assertEqual(partner.test_char, "youhou")

Contributor

History

This module is inspired of the following mixin code that can be found in OCA and shopinvader repository

Intial Authors are

Refactor/extraction have been done by

This refactor try to load all class correctly like Odoo does with the exact same syntax

Note this refactor/extraction have been done to fix the test of the following issue

https://github.com/shopinvader/odoo-shopinvader/pull/607

Changes

2.1.1

[FIX] FakeModelLoader: avoid loading module again on restore_registry() for Odoo 15.0+ [FIX] Ensures registy is cleaned up in addons without models

2.1.0

  • [IMP] Allow to ignore Odoo core modules to avoid warning

2.0.5

  • .gitignore added

2.0.4

  • [FIX] AttributeError in Odoo 15+, regression introduced in 2.0.3

2.0.3

2.0.2

  • Fix mock import for v15

2.0.1

  • Fix support for Odoo 15.0

2.0.0

  • Move to OCA

  • Re-license to LGPL

1.1.0

  • Refactoring (misc imp/fix)

1.0.0

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odoo-test-helper-2.1.1.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

odoo_test_helper-2.1.1-py2.py3-none-any.whl (6.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file odoo-test-helper-2.1.1.tar.gz.

File metadata

  • Download URL: odoo-test-helper-2.1.1.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for odoo-test-helper-2.1.1.tar.gz
Algorithm Hash digest
SHA256 d5a511ebdbab2004a7721f4b9bf02ef5c419c178cd85d60feb25440b5adba69a
MD5 4981f4a63c6e129e84369762a5b77048
BLAKE2b-256 46bcfb54851788e4eecce0ad458221f3dfe3711dbeee7fd2b64d7263646238fc

See more details on using hashes here.

File details

Details for the file odoo_test_helper-2.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for odoo_test_helper-2.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 08c3a2f7a4ba1971eb8dab46c36c0f24f2dca735021c92929f5629adaf23b219
MD5 a94960352306f6fc6baef7264a451cf9
BLAKE2b-256 a27a56f7a00207d65ed5e877ecbb254b4656e241abd0688f720827f300092a7f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page