Faire un mock pour une variable globale dans les tests de Python
J’ai essayé de tester quelques variables globales dans Python, spécialement pour un script, qui contient des variables globales. Et après avoir essayé et essayé (et échouer), je pense que je peux te comment le faire.
🏃 La solution la plus rapide
Maintenant, dans ton fichier de test, tu peux faire ce qui suit
Ensuite, dans ton fichier_demo
, la variable ENVS sera comme mocked.
✏️ La solution avec des descriptions
Conditions
Pour faciliter le travail, je vais recommander l’outil suivant: https://pypi.org/project/pytest-mock/
Qu’est-ce que je voulais faire?
Tout d’abord, nous avons un fichier appelé fichier_demo.py
avec le contenu suivant (et où est la variable globale).
Si tu essayes d’éxecuter fonction_simple
, elle montrera le dictionnaire avec vraie_valeur
et autre_vraie_valeur
là.
Maintenant, nous avons le fichier suivant de test
Voyons, je sais que le test semble simple, mais il s’assure de retourner une valeur zéro après montrer les valeurs ENVs.
👾 Écrasement et simulation (se moquer) des variables
Comme tu peux le voire, on appelle les variables d’environnement qui vient de l’ordinateur qu’on utilise, et si tu écrire tes tests, on espère les avoir dans le serveur CI/CD, ensuite les tests commenceront à échouer. Comment pouvons-nous éviter ça et utiliser des valeurs fixées dans notre serveur de tests (ou pipeline).
Si tu as installé l’outil mentionné ci-dessus, dans la section de Conditions, il est très facile de commencer de se moquer des valeurs. On a donc juste besoin d’ajouter une seule ligne.
Et tes tests n’exécuteront pas la variable ENV
vraie, et par conséquent, ils n’appelleront pas os.environ
.