Odoo Report Testing’s documentation

This lib provide tools to test odoo reports from version 7 and higher.


  • imagemagick is used to compare 2 (one page) pdf bit to bit.
  • pdftk is used to split pdf page per page.
  • Install this package (with pip pip install odoo-report-testing).


Here an example to test sale order quotation report test_so_report.py:

# -*- coding: utf-8 -*-
import os
from openerp.tests.common import TransactionCase
from odoo_report_testing.assertions import OdooAssertions

class TestSoReport(TransactionCase, OdooAssertions):

    def test_simple_so_report(self):

Assuming your module looks like:

├── test
│   ├── expected_reports
│   │   └── test_so_report.pdf
│   ├── __init__.py
│   └── test_so_report.py


You may want to generate those report without expose any odoo port so that you can render report properly without http access.

You can have a look to one of the following PRs:

How it works

When using assertOdooReport the library will:

  • Ask odoo to generates the report to test.
  • Save the generate pdf on the file system.
  • The generated report and the reference pdf are split page per page using pdftk.
  • Each pdf page are compared using compare program from imagemagick.
  • When a generated pdf page is different from its reference 2 images are generated:
    • A .png image with red color for diff pixels.
    • A .gif image with the generated page blinking (so only addition are visible).


Mainly thinks for CI availaible environement variable:

  • REPORT_TESTING_OUTPUT_DIR: Directory where are saved all generated files (report, diff files, …), if not provide the directory of the reference file is used.