run_pytest_addon.sh — Izvajalnik pytest za en dodatek (Odoo 18)
Pot: /srv/pmiverse/_pmiconfig/scripts/test/run_pytest_addon.sh.
Namen
- Izvede pytest za mapo
tests/enega dodatka v začasni bazi PostgreSQL. - Prazno bazo inicializira z
basein pred testi namesti ciljni dodatek. - Uveljavlja pravila PMIVerse: izrecno nalaganje
pytest-odoo, brez namestitev znotraj testov.
Uporaba
/srv/pmiverse/_pmiconfig/scripts/test/run_pytest_addon.sh \
-a <full_path_to_addon>/tests \
-d <db_name> \
-- --maxfail=1 -q
Obvezna argumenta
-a, --addon-tests: pot do mapetests/dodatka.-d, --database: ime začasne baze.
Delovanje
- Aktivira
/srv/pmiverse/_pmisuite18/venv. - Uporabi OCB
/srv/pmiverse/_pmisuite18/repos/OCBin konfiguracijo/srv/pmiverse/_pmisuite18/config/pmisuite18.conf. - Manjkajočo bazo ustvari z
createdb <name>, prazno inicializira zbase. - Ime dodatka odkrije iz nadrejene mape
testsin ga namesti pred pytest. - Prebere izbirni
tests/odoo_dependencies.txtin v istem koraku namesti navedene dodatke Odoo. Eno ime na vrstico, dovoljene prazne vrstice in celovrstični komentarji#. Imena preveri pred posegi v bazo. Neprazna deklaracija zahteva bazotest_*. Brez datoteke ostane vedenje samo za ciljni dodatek. - Izvede pytest z
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1in argumenti-p pytest_odoo --odoo-config=... --odoo-database=... <tests_path>.
Opombe
Zunanje odvisnosti iz __manifest__.py, na primer pyocclient, morajo biti v virtualnem okolju. V testih ne kličite button_immediate_install(); preverite nameščenost. Izbirne integracijske aplikacije deklarirajte kot testne odvisnosti, ne produkcijske odvisnosti manifesta, razen če jih zahteva sam dodatek. Oba izvajalnika deklaracijo prebereta samodejno, tudi v konfiguracijah PyCharm s tem izvajalnikom.
Primer
# Run tests for pmis_nextcloud
/srv/pmiverse/_pmiconfig/scripts/test/run_pytest_addon.sh \
-a /srv/pmiverse/_pmisuite18/repos/pmiverse/testing/pmis_nextcloud/tests \
-d test_pmis_nextcloud -- -q --maxfail=1
Izbirna poročila
Za -- lahko podate standardne argumente pytest, na primer --junitxml=... ali možnosti pokritosti ob nameščenem pytest-cov.