第一步:在自己想要测试的模块下创建一个test文件夹,用来存放测试文件,如图1:
第二步:在test文件夹中创建py文件,用来编写测试用例代码,如图2所示:
第三步:开始编写测试用例
1、数据准备:开始编写测试用例前需要先准备好数据,有两种方法:a.在demo中事先预置好数据 b.在代码中使用create方法创建数据,这里采用的是使用create创建的方式。
2、导入odoo测试类TransactionCase,并以setUp()函数启动测试代码,如图3所示:
tagged装饰器可以用来规定该测试用例的执行时间,默认是安装/升级完该模块后立即执行测试用例,如果用例中使用的预置数据有该模块安装之后才安装的,可以使用如图3的装饰器使俺测试用例在所有模块安装/升级完后再执行,其中“-”的前缀代表着删除该标签。tagged还有其他的标签,需要的可以自行去查看官网了解用法。
3、可以在setUp()函数里面预置好接下来会使用的数据,如图4所示:
可以使用self.env.ref(模块名称+预置记录id)获取到预置数据的记录。
直接使用create方法创建单据,建议先创建子表记录再创建主表,然后对主表的o2m字段使用(6,0,)插入子表明细行记录,或者直接使用(0,0,)创建记录,注意:(0,0,)创建时创建的是一个字典,如图5所示:
4、准备好数据以后就可以开始测试代码了,主要有五类:constrains约束、onchange、create基类、带返回值的私有函数和compute字段。
constrains约束:以with self.assertRaises(ValidationError):触发会抛错的约束,注意:ValidationError与函数抛错的错误类型保持一致。如图6所示:
create基类:直接创建记录触发函数,如图7所示:
带返回值的私有函数:调用模型里的函数,并且传入相应的参数,使用断言来判断测试的结果是否会跟预想生成的结果一致,如图8所示:
onchange:onchange的触发需要对数据记录进行form处理,然后再进行更改值得操作,主要分为普通类型,m2o类型,o2m类型,m2m类型
a.普通类型字段,直接进行赋值,记住再更改完成后要记得调用sava函数进行保存,或者使用with语法进行编写,可以自动提交(下同),如图9所示:
b.m2o类型,需要给该类型赋值记录集,而不是一个id,如图10所示:
c.o2m类型,需要使用new函数进行添加,使用edit进行编辑,使用remove进行删除,如图11、12所示:
d.m2m类型,需要使用add函数进行添加,使用remove进行删除,如图13所示:
第四步:启用测试用例
命令:coverage run --source=/opt/odoo/platform/ps_ber /opt/odoo/start -c /opt/odoo/config/pscloud-dev.conf -d test-420 --stop-after-init -i ps_ber --test-enable --log-level=test
/opt/odoo/platform/ps_ber:需要测试的模块路径
/opt/odoo/start -c /opt/odoo/config/pscloud-dev.conf:配置文件路径
-d test-420:指向数据库
-i/u ps_ber:创建/升级ps_ber模块
--test-enable:启动测试
第五步:查看测试覆盖率结果
coverage report:查看该模块的测试覆盖率,如图14所示:
coverage html:生成可视化的文件,可以详细查看哪些代码有被测试代码跑到