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.