You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo单元测试无法执行求助(v14/v15/v16版本)

Odoo单元测试未执行排查方案(Docker环境,14/15/16版本)

问题场景

在Docker容器内的Odoo 16(14、15版本存在同样问题)中执行以下命令运行单元测试,日志显示已加载测试文件,但测试未实际执行,进程直接触发 shutdown:

执行命令:

odoo -i custom_fields_mapping -d odootest8 -p 8001 --db_user=odoo --db_password=11111111111 --db_host=localhost --log-level=test --test-file=/mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py --stop-after-init

关键日志片段:

2023-03-21 13:52:32,558 414 INFO odootest8 odoo.service.server: loading test file /mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py
2023-03-21 13:52:32,581 414 INFO odootest8 odoo.service.server: Initiating shutdown

排查与解决方案

1. 检查测试文件结构与命名规范

Odoo对测试文件有严格的结构要求,不符合规范会导致测试被跳过:

  • tests目录必须包含空的__init__.py文件,否则Python无法识别为包
  • 测试类必须继承自odoo.tests.common.TransactionCase或odoo.tests.common.SavepointCase
  • 测试方法必须以test_为前缀,例如test_field_mapping_logic()

2. 调整命令参数,避免冲突

原命令中-i(安装模块)与--test-file的组合可能导致流程异常,建议替换为以下两种方式:

  • 若模块已安装,用-u更新模块并执行测试:
    odoo -u custom_fields_mapping -d odootest8 --db_user=odoo --db_password=11111111111 --db_host=localhost --log-level=test --test-file=/mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py --stop-after-init
    
  • 若为全新数据库,先初始化模块再执行测试:
    odoo -d odootest8 --db_user=odoo --db_password=11111111111 --db_host=localhost --init=custom_fields_mapping --test-file=/mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py --stop-after-init
    

3. 确认容器内测试文件权限与路径

Docker容器内的Odoo进程需拥有测试文件的读取权限:

  • 检查文件权限:
    docker exec -it <你的容器ID> ls -l /mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py
    
  • 若权限不足,调整权限:
    docker exec -it <你的容器ID> chmod 644 /mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py
    

4. 启用测试模式并获取详细日志

添加--test-enable强制启用测试执行,同时将日志级别设为debug排查细节:

odoo -u custom_fields_mapping -d odootest8 --db_user=odoo --db_password=11111111111 --db_host=localhost --log-level=debug --test-enable --test-file=/mnt/extra-addons/custom_fields_mapping/tests/test_custom_fields_mapping.py --stop-after-init

内容的提问来源于stack exchange,提问作者KostasC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:07:02