天天看点

odoo单元测试覆盖率

单元测试覆盖率

业务需求:

·减免测试人员常规操作BUG

  ·提高程序员代码质量
           

常规测试代码流步骤

预制demo数据

建立test_name.py

继承测试公共类(transcationCase)

定位单据以及预定需要的数据

执行单据所有按钮

执行Model里所有方法

manifest加载相关文件路径

启动测试

查看结果

一、 预制Demo数据

在被测模块下创建demo空文件,或者放在data下

示例代码:

odoo单元测试覆盖率
odoo单元测试覆盖率

2、预制数据。

提前制定好当前模块里所有模型的数据。

如果模块涉及到范围外的基础数据,也是需要预制的,或者在需要的时候引用原有的Demo

示例代码:

odoo单元测试覆盖率

若范围外的数据需要执行某个操作(仅一次),则可用属性function

示例代码:

odoo单元测试覆盖率

二、 建立test_name.py

命名必须以test_开头

odoo单元测试覆盖率

三、 继承公共测试类

odoo单元测试覆盖率

四、 定位单据以及预定需要的数据

这些数据员来源于Demo预制的数据(不限于当前模块)。直接ref(“IDName”).id

odoo单元测试覆盖率

五、 测试执行方法入口

test_name.py。 至少有一个以test_开头方法作为执行入口。

但是代码要遵循规范性开发。故同一代码功能放置在一个方法。

odoo单元测试覆盖率

六、 执行按钮代码

先定位到某个单据,然后直接调用某个按钮方法即可

如果方法有参数需要传递,是需要进行处理的。

判断该方法执行的结果是否符合预期结果

如:执行审核按钮,状态变为confirmed

odoo单元测试覆盖率

七、 执行Model(模型)里面的方法

提高代码的覆盖率就必须让所有的代码全部被执行。

注意:有些代码是有if 条件判断的,这时候需要制造数据满足该条件,使得该条件下的方法被执行。

八、 manifest加载demo 文档

odoo单元测试覆盖率

九、 运行测试

pip install coverage;

在项目文件夹下执行coverage run –source=module(模块路径)start –c conf(配置文件路径)-d db_name –i module –test-enable –stop-after-init –log-level=test;新建数据库便于加载demo数据,第二次执行的时候,则可以把-i 改为 - u

odoo单元测试覆盖率

用coverage report进行快速查看覆盖率,coverage html在当前工作文件夹下生成hrmlcov文件夹,包含一系列html文件,可查看覆盖率及代码运行及未运行部分:

odoo单元测试覆盖率

也可以去当前工程目录下查找htmlcov

odoo单元测试覆盖率
odoo单元测试覆盖率