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

Odoo单元测试函数打印指定报告及修改代码保存到特定文件夹的方法

Odoo单元测试导出报告解决方案

可行性说明

Odoo完全支持在单元测试函数中生成、打印并保存指定报告,你给出的原有代码已经完成了报告PDF二进制流的获取,仅需补充本地文件写入逻辑即可实现保存到指定文件夹的需求。

修改后的完整代码

import os

def test_report_rent(self):
    # 获取需要生成报告的租赁协议记录
    data = self.env['rentalagreement'].search([('id','=',4)])
    # 调用Odoo报告引擎生成PDF二进制内容
    # 注:Odoo 13及以上版本使用_render_qweb_pdf,低于13版本可保留原有get_pdf写法
    pdf = self.env['ir.actions.report'].sudo()._render_qweb_pdf(
        'building_management.report_building_agreement_my', 
        res_ids=data.ids, 
        data=None
    )[0] # 方法返回(二进制内容, 文件类型)元组,取第一个元素即为PDF内容
    
    # 替换为你实际需要的保存文件夹绝对路径,确保Odoo运行用户有该路径读写权限
    save_dir = "/your/target/save/path"
    # 自动创建不存在的文件夹
    if not os.path.exists(save_dir):
        os.makedirs(save_dir, exist_ok=True)
    # 拼接完整保存路径,用记录ID命名避免重名
    save_path = os.path.join(save_dir, f"租赁协议_{data.id}.pdf")
    # 二进制写入本地文件
    with open(save_path, 'wb') as f:
        f.write(pdf)
    # 测试阶段可选打印路径验证
    print(f"报告已保存至:{save_path}")

注意事项

  • 单元测试环境下一般不需要通过request对象调用报告模型,直接用self.env调用即可
  • 多公司测试环境下注意补充对应公司的上下文参数,避免出现报告跨公司访问权限报错
  • 如果是CI/CD自动测试场景,建议将保存路径设置为测试日志的归档目录,方便后续排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:45:03