jb_alvarado
Lieutenant
- Registriert
- Sep. 2015
- Beiträge
- 575
Hallo Allerseits,
bei einem Projekt habe ich in etwa diese Struktur:
Die default.py importiert dabei Funktionen der Dateien aus dem
Wenn ich das Programm starte funktioniert auch alles wie es soll, nur wenn ich mit pytest das Programm teste, findet er nicht die dynamisch importierte Funktion.
Habe auch schon statt locate
Wenn ich die improt Zeile so ändern würde:
Würde pytest gehen, aber nicht der normale Programmstart.
Habt ihr einen Tipp, wie ich das lösen kann?
bei einem Projekt habe ich in etwa diese Struktur:
Code:
Projekt/
app/
filters/
__init__.py
v_a.py
v_b.py
default.py
__init__.py
playlist.py
tests/
tests_playlist.py
app.py
Die default.py importiert dabei Funktionen der Dateien aus dem
filters
Ordner automatisch:
Python:
def custom_filter(filter_type, node):
"""
read custom filters from filters folder
"""
filter_dir = os.path.dirname(os.path.abspath(__file__))
filters = []
for filter_file in glob(os.path.join(filter_dir, f'{filter_type}_*')):
filter_ = os.path.splitext(os.path.basename(filter_file))[0]
filter_function = locate(f'app.filters.{filter_}.filter_link')
link = filter_function(node)
if link is not None:
filters.append(link)
return filters
Wenn ich das Programm starte funktioniert auch alles wie es soll, nur wenn ich mit pytest das Programm teste, findet er nicht die dynamisch importierte Funktion.
Habe auch schon statt locate
getattr(import_module(f'app.filters.{filter_}'), "filter_link")
getestet, aber das geht auch nur, wenn ich das Programm normal startet. Die Fehlermeldung dabei wäre:ModuleNotFoundError: No module named 'app'
Wenn ich die improt Zeile so ändern würde:
filter_function = locate(f'ffplayout_engine.ffplayout.filters.{filter_}.filter_link')
Würde pytest gehen, aber nicht der normale Programmstart.
Habt ihr einen Tipp, wie ich das lösen kann?
Zuletzt bearbeitet: