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')

 

posted @ 2022-03-28 09:57  看一百次夜空里的深蓝  阅读(274)  评论(0编辑  收藏  举报