Lorsque vous écrivez des scripts qui sont autonomes, est-ce une mauvaise idée d'utiliser le if __name__ == '__main__'
comme un endroit pour écrire des tests?Utiliser si __name__ == '__main__': pour les tests
Répondre
La logique de test et les tests ne doivent jamais faire partie du code de "production" (production pouvant être utilisée par vous, remise au client, etc.). Donc, c'est une mauvaise idée de les avoir n'importe où dans votre script.
Idéalement, les avoir dans des fichiers séparés.
Je suppose que non, en fait, j'ai vu beaucoup de scripts python (principalement des plugins d'une autre application) écrits de cette façon.
La meilleure pratique consiste à placer les tests dans des unités distinctes utilisant le module unittest. Cette séparation vous permet de garder le code principal propre (pas besoin de beaucoup de fonctions d'aide au test) et vous encourage à écrire de bons tests complets puisque vous n'êtes pas inhibé par l'encombrement du code principal.
Cela dépend vraiment de votre code et des objectifs de votre script. Pour les projets importants et complexes, vous devez certainement mettre tous vos tests dans un endroit séparé. Mais en travaillant sur quelque chose de petit, il peut être une bonne solution d'avoir des tests avec du code - c'est l'idée principale de doctest
(c'est un excellent module Python qui vous permet d'écrire des tests dans les docstrings). Dans ce cas, votre if __name__ == '__main__'
ressemblera:
if __name__ == "__main__":
import doctest
doctest.testmod()
Je trouve agréable et propre.
- 1. Raccourci pour if __name__ == '__main__':
- 2. Pourquoi fait-il cela? si - __name__ == '__main__'
- 3. énigme utilisant python-multi-traitement liés à si __name__ == '__main__'
- 4. Powershell equivilent de années python si __name__ == « __main__ »:
- 5. L'équivalent PHP de Python __name__ == "__main__"?
- 6. La portée de if __name__ == __main__
- 7. Quel est l'équivalent clojure de l'idiome Python "if __name__ == '__main__'"?
- 8. si __name__ == « __main__ » dans les sous-classes Python à exécuter en utilisant la fonction de parent
- 9. Comment faire __name__ == '__main__' lorsque le module en cours d'exécution
- 10. Est-ce que __name__ '__main__' est exécuté lorsque vous exécutez un script Python avec un cronjob?
- 11. Existe-t-il un équivalent R du pythonic "if __name__ ==" __main__ ": main()"?
- 12. Exposer __main__
- 13. Ruby équivalent à Python __main__
- 14. __main__ et portée en python
- 15. Python: Novice PRAC classe d'objets et __main__
- 16. Autres utilisations de l'attribut __name__
- 17. python __getattr__ et __name__
- 18. Utiliser les déclarations "friend" pour les tests unitaires. Mauvaise idée?
- 19. Enregistrement dans les tests py.test
- 20. Matlab - Utiliser un réseau formé pour les tests
- 21. PyDev: Undefined variable d'importation: __name__
- 22. Puis-je utiliser SOAPUI pour les tests de simultanéité?
- 23. Exemple X509Certificate2 RawData à utiliser pour les tests unitaires?
- 24. Quelles sont les différentes valeurs possibles de __name__ dans un script Python, et que signifient-elles?
- 25. Module Google App Engine __main__
- 26. Comment utiliser les tests unitaires dans Netbeans?
- 27. Utiliser maxcpucount pour paralléliser les tests unitaires dans msbuild?
- 28. Bibliothèque pour aider à utiliser Guice dans les tests d'intégration
- 29. Comment utiliser ClassImposteriser de jMock pour les tests unitaires Android?
- 30. Comment utiliser Jackson dans les tests GwtTestCase
Pourquoi ???????????? –
Veuillez justifier. –
Je suis un nouveau programmeur et je trouve cette question non informative – RodericDay