添加自动化测试
编程的最佳实践包含代码的自动化测试,对于像 Python 这样的动态语言尤为重要,因为它没有编译这一步,只有在解释器实际运行代码时才会报语法错误。好的编辑器可以让我们提前发现问题,但无法像自动化测试这样帮助我们确定代码如预期般运行。
“ 注意: Odoo 12 的修改
在老版本中, Odoo 使用 YAML 文件来进行测试,但 Odoo 12 中移除了对 YAML 文件的支持,所以不能再使用该格式文件。 ”
测试驱动开发(TDD -Test-driven Development) 方法让我们先写测试,检查错误,然后开发代码直至通过测试。受此方法启示,在添加实际功能前我们先添加模块测试:
1、 测试代码文件名应以 test_开头,并通过 tests/__init__.py 引用。但测试目录(也即 Python
子模块)不应在模块的外层__init__.py 中引入,因为仅在测试执行时才会自动查找和加载
它。
2、 测试应放在 tests/子目录中,在 tests/__init__.py 中添加如下代码:
from . import test_book
3、 在 tests/test_book.py 文件中添加实际的测试代码:
from odoo.tests.common import TransactionCase
class TestBook(TransactionCase):
def setUp(self, *args, **kwargs):
result = super().setUp(*args, **kwargs)
self.Book = self.env['library.book']
self.book_ode = self.Book.create({
'name': 'Odoo Development Essentials',
'isbn': '879-1-78439-279-6'})
return result
def test_create(self):
"Test Books are active by default"
self.assertEqual(self.book_ode.active, True)
以上代码添加一个简单测试用例,创建一本新书并检测 active 字段的值是否正确。
4、 使用–test-enable 参数在安装或升级模块时进行测试
~/odoo-dev/odoo/odoo-bin -d dev12 -u library_app --test-enable
5、 Odoo 服务会在升级的模块中查找 tests/子目录并运行。现在测试会抛出错误,在输出日志中可看到测试相关的 ERROR 信息。在为模块添加完图书模型后应该就不再报错。