本文共 2322 字,大约阅读时间需要 7 分钟。
当我们开发大型应用时,自动化测试能够显著提升应用的健壯性。Odoo作为一个开源框架,提供了多种自动化测试方案,帮助开发者确保应用的稳定性。以下是Odoo自动化测试的主要方案:
Odoo提供了三种主要的测试方案:
本章将详细指导如何配置和执行自动化测试,涵盖以下内容:
为了覆盖所有应用场景,我们创建了一个新的模型LibraryBook:
class LibraryBook(models.Model): _name = 'library.book' name = fields.Char('Title', required=True) date_release = fields.Date('Release Date') author_ids = fields.Many2many('res.partner', string='Authors', default=lambda: self.env.user.partner_ids) state = fields.Selection([ ('draft', 'Not Available'), ('available', 'Available'), ('lost', 'Lost') ], 'State', default="draft") color = fields.Integer() def make_available(self): self.write({'state': 'available'}) def make_lost(self): self.write({'state': 'lost'}) 对于JavaScript测试用例,我们将使用第十五章中的int_color小部件。如需了解代码仓库,可访问GitHub仓库。
Python测试用例用于验证业务逻辑的可靠性。为了确保对模型修改的测试覆盖性,我们将创建用于验证图书状态改变的业务逻辑测试。
tests/__init__.py:from . import test_book_state
tests/test_book_state.py:from odoo.tests.common import TransactionCaseclass TestBookState(TransactionCase): def setUp(self, *args, **kwargs): super(TestBookState, self).setUp(*args, **kwargs) self.test_book = self.env['library.book'].create({'name': 'Book 1'}) def test_button_available(self): '''Make available button''' self.test_book.make_available() self.assertEqual(self.test_book.state, 'available', 'Book state should be changed to available') def test_button_lost(self): '''Make lost button''' self.test_book.make_lost() self.assertEqual(self.test_book.state, 'lost', 'Book state should be changed to lost') 运行测试用例时,执行以下命令:
./odoo-bin -c server.conf -i my_library --test-enable
Odoo将测试文件识别并运行。TransactionCase确保每个测试用例在独立的事务中执行,并在测试完成后自动回滚。@tagged('-at_install', 'post_install')装饰器用于控制测试时机。
为了支持JavaScript测试,Odoo使用Headless Chrome。安装步骤如下:
pip3 install websocket-client
Headless Chrome能够无图形化运行测试用例,适用于服务器环境。
转载地址:http://ypkbz.baihongyu.com/