
Κατά τη χρήση του python behave 1.2.7, ενδέχεται σύντομα να καταλήξετε με πολλαπλά βήματα προσπαθώντας να βρείτε έναν τρόπο να τα οργανώσετε σε υποκαταλόγους.
tests/
+-- feature/
+-- *.feature
+-- steps/
+-- menu_steps/
+-- user_menu_steps.py
+-- admin_menu_steps.py
+-- organisation_menu_steps.py
+-- profile_steps/
+-- user_profile_steps.py
+-- admin_profile_steps.py
environment.py
behave.ini
Ωστόσο, η παραπάνω στρατηγική θα αφήσει τον behave runner να διαμαρτύρεται ότι τα βήματα δεν μπορούν να βρεθούν.
"Undefined step. Rest part of scenario is skipped"
Ένας τρόπος για να επιλύσετε αυτό το ζήτημα είναι ο εξής:
Μετατρέψτε όλους τους υποκαταλόγους βημάτων σε modules προσθέτοντας ένα κενό αρχείο init.py σε κάθε υποκατάλογο βημάτων.
+-- steps/
+-- __init__.py
+-- menu_steps/
+-- __init__.py
+-- user_menu_steps.py
+-- admin_menu_steps.py
+-- organisation_menu_steps.py
+-- profile_steps/
+-- __init__.py
+-- user_profile_steps.py
+-- admin_profile_steps.py
Εισαγάγετε δυναμικά όλα τα submodules βημάτων μέσα στον κατάλογο steps προσθέτοντας τα εξής στο steps/init.py:
import os
import pkgutil
__all__ = []
PATH = [os.path.dirname(__file__)]
for loader, module_name, is_pkg in pkgutil.walk_packages(PATH):
__all__.append(module_name)
_module = loader.find_module(module_name).load_module(module_name)
globals()[module_name] = _module
(Βασισμένο στο: https://stackoverflow.com/questions/3365740/how-to-import-all-submodules/3365846#3365846 )
Έτοιμο!
Έχουμε δοκιμάσει τον παραπάνω κώδικα χρησιμοποιώντας Python 3.7 και python-behave 1.2.7.