跳转到主要内容

Odoo测试助手

项目描述

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

odoo-test-helper是用于编写odoo测试的工具箱

加载假模型

有时您构建一个可以由多个模块使用的抽象模块。在这种情况下,如果您想使用真实记录测试它,您需要注册真实模型。

一个解决方案是创建一个带有少量实现的module_test模块,该实现使用您的抽象模型。

另一个解决方案是仅定义测试模型并在测试中加载它们。这个库使得这一点变得可能且简单。

示例

这里有一个测试示例

此示例从文件

实际实现案例可以在以下模块中找到

如何导入

注意导入假类必须以正确的方式进行。导入文件将自动将所有类添加到“module_to_models”变量中。导入必须在工作备份之后进行!

错误方式

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")

正确方式

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")

贡献者

历史

本模块受到以下混合代码的启发,该代码可在OCA和shopinvader仓库中找到

初始作者为

重构/提取由以下人员完成

此重构尝试正确加载所有类,就像Odoo使用完全相同的语法一样

请注意,此重构/提取是为了修复以下问题的测试

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

更改

2.1.1

[修复] FakeModelLoader:在restore_registry()中避免重新加载模块(Odoo 15.0+)[修复] 确保在无模型的附加组件中清理注册表

2.1.0

  • [改进] 允许忽略Odoo核心模块以避免警告

2.0.5

  • 添加.gitignore

2.0.4

  • [修复] Odoo 15+中的AttributeError,2.0.3中引入的回归

2.0.3

2.0.2

  • 修复v15的mock导入

2.0.1

  • 修复对Odoo 15.0的支持

2.0.0

  • 迁移到OCA

  • 重新许可为LGPL

1.1.0

  • 重构(杂项改进/修复)

1.0.0

  • 初始发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

odoo-test-helper-2.1.1.tar.gz (11.2 kB 查看散列)

上传时间

构建分发

odoo_test_helper-2.1.1-py2.py3-none-any.whl (6.3 kB 查看散列)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面