OdooWiki OCA HUB

Unittest xUnit reports

odoo_test_xmlrunner folder_open OCA/server-tools open_in_new
Tools License: AGPL-3

This module generate unittest reports using unittest-xml-reporting tool.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

This module changes how Odoo runs its automated tests so that the results are saved as xUnit-style XML report files instead of only being shown on screen.

This is a technical tool for developers and system administrators, not a module that adds screens or menus for everyday users. When Odoo is started with testing enabled, the module replaces the normal test runner with an external tool called unittest-xml-reporting.

What it does: - It runs the test suite through the XML test runner. - It writes the test results as XML files into a folder called test_results (or another folder if one is configured). - It creates that folder automatically if it does not already exist. - It keeps Odoo's own test result counters in sync, adding up failures, errors, skipped tests and the number of tests run from the XML results.

Where it appears in Odoo: nowhere in the user interface. There are no menus, no buttons and no reports added. The only visible effect is the XML files produced on the server after a test run.

Which areas it touches: it depends only on the base module and patches the test suite and test result classes (OdooSuite and OdooTestResult). It also requires the Python package unittest-xml-reporting to be installed on the server.

Because the code only changes the test runner, it does not affect sales, accounting, inventory or any other business process.

Depends on

base

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 2 confirmed, 7 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/server-tools.

terminal Installation and usage

OCA documentation · Odoo 18.0

Install python library https://pypi.org/project/unittest-xml-reporting/

The module is automatically installed on the Odoo instance.

Run the native Odoo tests

Run the native Odoo tests. See the Odoo documentation for more information.

Gitlab CI usage example

Add the following job to your .gitlab-ci.yml file:

stages:
  - test

variables:
  POSTGRES_DB: odoo
  POSTGRES_USER: odoo
  POSTGRES_PASSWORD: odoo
  POSTGRES_HOST_AUTH_METHOD: trust

test:
  stage: test
  image:
    name: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest
  services:
    - name: postgres:15
  tags:
    - gitlab-org-docker
  script:
    # install odoo and run tests
    - oca_install_addons && oca_init_test_database && oca_run_tests
    # generate coverage report
    - coverage html -d htmlcov && coverage xml -o coverage.xml
    # read line-rate from coverage.xml and print it as percentage
    - total=$(grep -oP '<coverage[^>]*line-rate="\K[0-9.]+' coverage.xml | head -n 1 | awk '{print $1 * 100}') && echo "total ${total}%"
  coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
  artifacts:
    paths:
      - htmlcov/*
    when: always
    reports:
      junit: test_results/*.xml
      coverage_report:
          coverage_format: cobertura
          path: coverage.xml

Github Actions usage example

Add the following job to your .github/workflows/main.yml file:

name: tests

permissions:
    contents: read
    checks: write
    id-token: write

on:
  push:
    branches: ["main"]
    tags: ["*"]
  pull_request:

jobs:
  test:
    runs-on: ubuntu-22.04
    container: ${{ matrix.container }}
    name: ${{ matrix.name }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - container: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest
            name: test with Odoo
    services:
      postgres:
        image: postgres:12.0
        env:
          POSTGRES_USER: odoo
          POSTGRES_PASSWORD: odoo
          POSTGRES_DB: odoo
        ports:
          - 5432:5432
    steps:
      - uses: actions/checkout@v3
        with:
          persist-credentials: false
      - name: Install addons and dependencies
        run: oca_install_addons
      - name: Check licenses
        run: manifestoo -d . check-licenses
      - name: Check development status
        run: manifestoo -d . check-dev-status --default-dev-status=Beta
      - name: Initialize test db
        run: oca_init_test_database
      - name: Run tests
        run: oca_run_tests
      - uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
      - name: Publish Test Report
        uses: mikepenz/action-junit-report@v4
        if: success() || failure() # always run even if the previous step fails
        with:
          report_paths: 'test_results/*.xml'

No verified information in OCA: Configuration.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.