奥多测试助手
odoo-test-helper的Python项目详细描述
odoo test helper是编写odoo测试的工具箱
装载假模型
有时,您会构建一个可供多个模块使用的抽象模块。 在这种情况下,如果你想用真实的记录来测试它,你需要注册真实的模型。在
一种解决方案是创建一个模块测试模块 有一个使用抽象模型的小实现。在
另一个解决方案是定义只测试的模型并将它们加载到测试中。 这个lib使得这成为可能和容易。在
示例
这里有一个测试示例:
此示例从文件加载类ResPartner:
在下面的模块中可以找到真正的实现案例
如何导入
小心导入假类必须以正确的方式完成。 导入一个文件将自动添加“module\u to\u models”中的所有类 变量。导入必须在备份后完成!在
错误的方法
fromodoo.testsimportSavepointCasefromodoo_test_helperimportFakeModelLoader# 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 modelfrom.modelsimportResPartnerclassTestMixin(SavepointCase):@classmethoddefsetUpClass(cls):super(TestMixin,cls).setUpClass()cls.loader=FakeModelLoader(cls.env,cls.__module__)cls.loader.backup_registry()cls.loader.update_registry((ResPartner,))@classmethoddeftearDownClass(cls):cls.loader.restore_registry()super(TestMixin,cls).tearDownClass()deftest_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")
正确的方法
^{pr2}$贡献者
- Sébastien BEAU<;sebastien.beau@akretion.com>
- 劳伦特·米格农<;laurent.mignon@acsone.eu>
- Simone Orsi<;simone.orsi@camptocamp.com>
历史
本模块受以下mixin代码的启发,这些代码可以在OCA和shopInventer存储库中找到
- 在OCA中混音:https://github.com/OCA/search-engine/blob/7fd85a74180cfff30e212fca01ebeba6c54ee294/connector_search_engine/tests/models_mixin.py
- 混入ShopInvestor:https://github.com/shopinvader/odoo-shopinvader/blob/b81b921ea52c911e5b33afac88adb8f9a1c02626/base_url/tests/models_mixin.py
最初的作者是
- 劳伦特·米格农<;laurent.mignon@acsone.eu>
- Simone Orsi<;simone.orsi@camptocamp.com>
重构/提取由
- Sébastien BEAU<;sebastien.beau@akretion.com>
这个重构器会像Odoo一样,使用完全相同的语法正确加载所有类
请注意,此重构/提取是为了修复以下问题的测试
变更
- 添加假模块加载器
- 项目
标签: