首页 > 解决方案 > Odoo v11.0 测试

问题描述

我是odoo的新手。我正在使用 odoo v11.00 我正在尝试测试我的自定义模块的模型。

这是文件结构

course_management
|-- ...
`-- tests
    |-- __init__.py
    |-- test_course_management_course.py

这是 test_course_management_course.py 文件的内容

from odoo.tests import common


class TestCourseManagement(common.TransactionCase):

    def test_creation_end_date(self):
        test_course = self.env['course.management.course'].create({
            'name': 'TestProjectfromtestcase'
        })
        self.assertEqual(test_course.name, 'TestProject')

我尝试过的命令如下

./odoo-bin -c /home/bs632/odoo.conf -u course_management --test-enable -d testDB


./odoo-bin -c /home/bs632/odoo.conf --log-level=test -u course_management --test-enable -d testDB --test-report-directory=./testlog.


./odoo-bin -c /home/bs632/odoo.conf --log-level=test -u course_management --test-enable -d testDB


./odoo-bin -c /home/bs632/odoo.conf --log-level=test -i course_management --test-enable -d testDB

但是测试没有运行。

标签: testngodoo-11

解决方案


我已经使用 odoo 工作了 9 年,我可以说,odoo 测试很糟糕。在 vanilla 安装 11.0 中,您无法运行单个测试单元、案例或测试单个模块。你可以运行“all or nothing”,但是当你编写一个单独的测试单元时,运行“everything”完全没有意义。它在 odoo 12.0 中使用测试标签进行了更改,您可以在其中运行如下命令:

python odoo-bin --test-tags nice,standard

但它仍然不支持运行单个测试单元、案例或模块。我不知道为什么 odoo 即使在 15.0 版本中也没有修复它。不幸的是,它不支持控制器测试(HttpCase)。

Odoo 测试是在 unittest 模块中编写的,但命令如下

python -m unittest discover course_management

不适用于 odoo,因为它不会被包裹在 odoo 服务器中。基本上你会得到无法导入odoo的信息。

我发现 odoo 是最好的 python 框架之一,但是如果没有“正常”测试,大多数第三方开发人员自定义创建的代码通常质量很差。在我 9 年的经验中,我工作的公司都没有编写测试。您可以在 odoo 应用程序中找到一些模块。


推荐阅读