Skip to main content

ODOOFX: Odoo library for Robot Framework

OdooFxLibrary brings Odoo test automation to Robot Framework. Today it talks to Odoo through its external API: XML-RPC up to Odoo 18, JSON-2 from Odoo 19, behind one keyword vocabulary that reads records and state codes, and writes only when the connection opts in, with a journal of every write. It targets Odoo Community and Enterprise. The web interface (Browser library) is the next channel.

This repository publishes the library sources and, as they are written, the documentation that concerns the library and its keyword reference.

Status (0.1.0, 2026-10-05): bootstrap. The RPC channel works, reads and writes, proven live on Odoo 16 (XML-RPC) and Odoo 19.0-20260908 (XML-RPC and JSON-2). Writes are off unless the connection opts in. The web channel is a skeleton that only warns. Signatures may still change before 1.0.

Install

pip install robotframework-odoofx

Requirements: Python 3.10 or later, Robot Framework 7.4 or later, and an Odoo instance reachable over HTTP (designed for Odoo 14 and later, proven on 16 and 19). The web extra (pip install "robotframework-odoofx[web]", then rfbrowser init once for the Playwright browsers) brings the Browser library for the coming web channel; all installs every extra.

Keyword documentation: cyrilm29.github.io/robotframework-odoofx.

Keywords of the current version

Keyword Purpose
Connect To Odoo Prove the target (URL, database, version) and open the RPC connection; channel=auto picks JSON-2 from Odoo 19, XML-RPC before; allow_write opts in to writes, expected_series refuses another Odoo version
Get Odoo Connection Info The proven target of the current connection, never the secret
Count Odoo Records Count the records of a model matching a domain
Search Read Odoo Records Read the records of a model matching a domain
Get Field Selection Values The technical codes of a selection field
Count Odoo Records By State Record count per state code
Get Odoo Record State The state code of one identified record
Odoo Record State Should Be Fail unless the identified record is in the expected state code
Assert Quotation Status Is Check a quotation's state code, by order reference or id
Create Odoo Record, Update Odoo Record, Delete Odoo Record Write a record (needs allow_write)
Call Odoo Record Method Call a model method such as action_confirm or action_cancel (needs allow_write)
Get Odoo Write Journal Every write (after entry since) with its phase: planned, done, failed or unknown (to read back, never to resend)
Odoo Write Journal Should Hold No Unknown Outcome, Odoo Last Write Should Be Assert on the journal: no write of unknown effect, the last write in a given phase
Reconcile Odoo Write Settle a planned or unknown journal entry after reading the record back
Get Odoo Config Parameter A system parameter such as web.base.url (administrator)
Odoo User Should Be In Group, Odoo User Should Not Be In Group Group membership of a user, the group named by its external id
New Odoo Run Marker A unique label to put in a free-text field of the records a run creates
Get Odoo Server Time The server's clock (UTC, one second), to bracket what a run created
Resolve Odoo External Id The database id behind an external id such as product.product_product_1, proved to be of the expected model
Get Odoo Record One identified record, whole or by fields
Odoo Record Exists Whether a record exists (archived ones count)
Odoo Record Should Exist, Odoo Record Should Not Exist Prove a presence or a removal on the identified record
Disconnect From Odoo Close the connection
Navigate To Menu Skeleton (web channel), only warns
Create New Quotation Skeleton, only warns
*** Settings ***
Library    OdooFxLibrary

*** Test Cases ***
Read A Quotation State
    Connect To Odoo    http://localhost:8069    my_database    admin    ${PASSWORD}    channel=xmlrpc
    Assert Quotation Status Is    sale    S00004
    [Teardown]    Disconnect From Odoo

States are compared by code (draft, sent, sale, cancel), never by the translated label: a label fails the assertion as "not a state code".

Credentials never live in a suite: pass them on the command line (robot -v "PASSWORD: Secret:..." suite.robot, the Robot Framework 7.4 typed variable keeps them out of the logs) or through the environment.

Layout

src/OdooFxLibrary/    the library

Issues

Bug reports and suggestions are welcome as GitHub issues.

License

Apache 2.0. See LICENSE and NOTICE.

Trademarks

Odoo is a trademark of Odoo S.A. Robot Framework is a trademark of the Robot Framework Foundation. ODOOFX is an independent project, not affiliated with, sponsored or endorsed by Odoo S.A. or the Robot Framework Foundation.

Metadata

Release files for robotframework-odoofx 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for robotframework-odoofx 0.1.0
File Size Uploaded
robotframework_odoofx-0.1.0.tar.gz 19.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for robotframework-odoofx 0.1.0
File Interpreter ABI Platform
robotframework_odoofx-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 39.2 kB

Release files / robotframework_odoofx-0.1.0.tar.gz

Download URL robotframework_odoofx-0.1.0.tar.gz
Size 19.9 kB
Tags Source
SHA-256 checksum
How to use checksums
eece2e54b242d0ff77d38f5317d6141f5713cd6c2a7cd75297937111b2da7b28
BLAKE2b-256 checksum
How to use checksums
2a99ab10f2f08b32883efa40e26f7df7094d1297af5644db1dc7d294ff7fc2fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release files / robotframework_odoofx-0.1.0-py3-none-any.whl

Download URL robotframework_odoofx-0.1.0-py3-none-any.whl
Size 19.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4037858658ee7f3f0444438088a3a89cf898626ad1e7e3365ea6c0955b63bf53
BLAKE2b-256 checksum
How to use checksums
02ff12eea6d2697fb2c55e85cdc6b9c786b018613dacc44837fc6a7c64a8df74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page