Preskoči na vsebino

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 base in 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 mape tests/ dodatka.
  • -d, --database: ime začasne baze.

Delovanje

  • Aktivira /srv/pmiverse/_pmisuite18/venv.
  • Uporabi OCB /srv/pmiverse/_pmisuite18/repos/OCB in konfiguracijo /srv/pmiverse/_pmisuite18/config/pmisuite18.conf.
  • Manjkajočo bazo ustvari z createdb <name>, prazno inicializira z base.
  • Ime dodatka odkrije iz nadrejene mape tests in ga namesti pred pytest.
  • Prebere izbirni tests/odoo_dependencies.txt in 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 bazo test_*. Brez datoteke ostane vedenje samo za ciljni dodatek.
  • Izvede pytest z PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 in 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.