Hoppa till innehåll

Tester i Odoo: enhetstester, tours och CI

Kod som inte testas är kod som inte fungerar

Odoo har ett inbyggt testramverk. Python-enhetstester för affärslogik, HTTP-tester för controllers, och tours (browser-tester) för frontend. I kombination med CI-pipelines fångar du fel innan de når produktion.

Enhetstester

Ärv från odoo.tests.common.TransactionCase (varje test körs i en transaktion som rullas tillbaka) eller SavepointCase (setUpClass körs en gång, tester delar data). Skapa testdata i setUp, anropa metoder, verifiera med self.assertEqual och self.assertRaises.

HTTP-tester

Ärv från HttpCase. Testa controllers, webbendpoints och JSON-RPC-anrop. Använd self.url_open() för GET och POST. Verifiera statuskoder och response-body.

Tours

Browser-baserade tester som simulerar användarinteraktion. Definiera steg: klicka på meny, fyll i fält, klicka på knapp, verifiera resultat. Tours körs i en headless Chrome (eller Chromium). Bra för att testa hela flöden: skapa offert, bekräfta, fakturera.

Köra tester

odoo --test-enable --stop-after-init -d test_db --init my_module. Testerna körs vid modulinstallation. --test-tags filtrerar specifika tester. I Docker: docker exec odoo odoo --test-enable....

CI med GitHub Actions

Sätt upp en GitHub Action som startar PostgreSQL och Odoo, installerar din modul och kör tester. OCA har en referens-workflow (oca/oca-ci) som hanterar det mesta. Pull requests som bryter tester blockeras automatiskt.

Vad du bör testa

Computed fields: ge input, verifiera output. Constraints: försök skapa ogiltig data, verifiera att undantag kastas. Workflows: skapa order, bekräfta, fakturera, kontrollera tillstånd efter varje steg. Inte allt behöver testas, men affärskritisk logik ska alltid ha tester.

Datamigrering till Odoo: så flyttar du från annat system
Planering, mappning och validering