odoo 14 python 单元测试步骤
# odoo 14 python 单元测试步骤 # 一.在模块根目录创建tests目录 # 二.在tests目录下创建__init__.py文件 # 三.继承TransactionCase(SingleTransactionCase、SavepointCase)类 # 四.实现setUp(self, *args, **kwargs)方法 # 五.以test_前缀为方法名,就是你的测试用例. # 在测试用例中调用self.assertEqual方法来断言你的测试用例是否成功执行 # 六.TransactionCase、SingleTransactionCase、SavepointCase继承这三个不同的类,调用测试用例的情况都不一样 # TransactionCase: # 1.每一个测试用例是在单独的事务中运行的。 # 2.一旦测试用例方法运行成功,事务将自动回滚。 # 3.setUp方法在每次自动调用我们测试用例前都会调用一次,也就是有多少个测试用例就调用多少次setUp。 # SingleTransactionCase: # 1.所有测试用例都在同一个事务中执行。 # 2.因此从一个测试用例中产生的数据可以在另一个测试用例中使用。 # 3.事务从第一个测试用例开始,到最后一个测试用例结束时回滚。 # SavepointCase: # 1.测试方法运行在回滚的保存点中,而不是将所有的测试用例都放在一个事务中。 # 2.通过只生成一次测试数据来提高它们的速度。 # 3.这里,需要使用setUpClass()方法来生成初始化测试数据。 # 七.对测试类别进行标记. # 1.标记可以决定执行测试用例是在安装模块前还是在安装模块后执行。 # 2.或者你还可以自定义标签。 # 3.运行的时候你可以指定标记执行测试用例 # 4.标准标记有: # standard(默认就有):默认会指定执行该标记的测试用例 # at_install(默认就有):安装模块后立马执行测试用例 # post_install:在所有模块安装完成后再执行测试用例 # 5.删除默认标记:在标记前面加-减号就代表删除该默认标记 # 八.运行测试用例:./odoo‐bin ‐c server.conf ‐i my_library ‐‐test‐tags=my_library # 例子: from odoo.tests.common import TransactionCase, tagged @tagged('-at_install', 'post_install') class 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_availabel(self): self.test_book.make_available() self.assertEqual(self.test_book.state, 'available', 'Book state should be changed to available') def test_button_lost(self): self.test_book.make_lost() self.assertEqual(self.test_book.state, 'lost', 'Book state should be changed to lost')