Ich kann keine Mock über meine Umgebungsvariablen machenPython

Python-Programme
Anonymous
 Ich kann keine Mock über meine Umgebungsvariablen machen

Post by Anonymous »

Ich habe Probleme beim Testen der Art und Weise, wie ich die DB in einem Zustand meines Geltungsbereichs wähle, in dem ich das Deplyoment ausführen werde: < /p>
from app.resources import secrets
from app.resources.scope import get_scope
try:
scope = get_scope()
if "test" in scope or not scope:
db_db = 'test_db'
else:
db_db = 'prod_db'
except EnvVarNotDefined:
db_db = 'test_db'
< /code>
Das Paket get_scope () konfigurieren Sie es wie folgt in zwei Dateien: < /p>
from app.resources.env import get_env

SCOPE = get_env("SCOPE", "")

def get_scope() -> str:
return SCOPE
< /code>
und get_env (): < /p>
import os

def get_env(key: str, default: str = None) -> str:
return os.getenv(key, default)
< /code>
Der von mir definierte Test ist wie folgt < /p>
@patch("app.database.service.Database_Service.__new__")
class DatabaseServiceTest(TestCase):
def setUp(self):
self.app = app.create_app().test_client()
self.app.testing = True
self.db = Database_Service()

@patch("app.resources.scope.get_scope")
@patch("app.database.service.secrets.get_secret")
def test_init_prod_scope(self, mock_get_secret, mock_get_scope, mock_auth):
mock_get_scope.return_value = "prod"
_ = Database_Service()
mock_get_secret.assert_not_called()
< /code>
Obwohl ich mock_get_scope.return_value = "prod" definiere, bekomme ich im Debugging eine leere Rendite des Umfangs: "". < /p>
i Ich habe versucht, Mock.patch.dict (Os.Environ, Clear = true) in meiner kontinierst.py -Datei zu verwenden, aber es hat nicht funktioniert und ich habe es in diesem Artikel gesehen: Wie kann ich meine Umgebungsvariablen für meinen PyTest verspotten? /p>
Ich habe die Tests in diesem Beitrag durchgeführt, ich konnte es auch nicht zum Laufen bringen: Python Mock Patch OS.Environ und Rückgabewert < /p>
Schließlich, schließlich, Zum Test habe ich die Methode mock_get_scope.assert_called_once () hinzugefügt, und der erhaltene Fehler lautet: assertionError: erwartet 'get_scope', einmal aufgerufen zu werden. 0 -mal bezeichnet.
In der Tat scheint der Fehler darauf zurückzuführen zu sein>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post