Ich versuche, eine Konfigurationsdatei in einer Django-App zu patch und Schwierigkeiten zu verstehen, wie es zu tun, da die Art, wie wir die Konfig importieren. Ich denke nicht, dass die Tatsache, dass es Django ist, hier eine große Rolle spielt, aber es treibt diese Dateistruktur teilweise an.Patch eine Konfigurationsdatei als anderer Name in Python importiert
app/views.py
from . import config as APP_CONFIG
...later on in some function...
retry_count = APP_CONFIG.MAX_NUMBER_RETRIES
app/config.py
MAX_NUMBER_RETRIES = 1
Wie richtig ich diese Konfigurationseinstellung Patch?
Ich habe Sorten von @patch('app.views.CONFIG.MAX_NUMBER_RETRIES', 1)
oder @patch('app.config.MAX_NUMBER_RETRIES', 1)
in meiner Testfunktion vergeblich versucht (ich benutze Pytest).
Dies funktioniert nicht für mich, und ich frage mich, ob, wenn das importiert wird, bevor der Test ausgeführt wird, so dass der Patch-Wert nicht ins Spiel kommt. Um genauer zu sein, verwende ich den Wert, um ein Attribut für eine Klasse (eine Django-ListView) zu setzen. – Chris
Ich konnte es nicht funktionieren, aber da es Django ist, habe ich den Parameter bei der Instanziierung der Ansicht in meinem Test übergeben. Es ist einer der standardmäßigen optionalen Parameter, so dass es zum Testen in Ordnung ist, ohne den Code zu modifizieren. – Chris