Alors les médecins ici présents disent : "Vous dites que ça fait mal ? Alors ne le faites pas !" ont probablement raison. Mais si vous voulez vraiment le faire, voici une façon de passer des arguments à un test unittest :
import sys
import unittest
class MyTest(unittest.TestCase):
USERNAME = "jemima"
PASSWORD = "password"
def test_logins_or_something(self):
print('username:', self.USERNAME)
print('password:', self.PASSWORD)
if __name__ == "__main__":
if len(sys.argv) > 1:
MyTest.USERNAME = sys.argv.pop()
MyTest.PASSWORD = sys.argv.pop()
unittest.main()
Cela vous permettra de courir avec :
python mytests.py myusername mypassword
Vous avez besoin de la argv.pop
s, afin que vos paramètres de ligne de commande ne perturbent pas ceux d'unittest...
Vous pouvez également envisager d'utiliser des variables d'environnement :
import os
import unittest
class MyTest(unittest.TestCase):
USERNAME = "jemima"
PASSWORD = "password"
def test_logins_or_something(self):
print('username:', self.USERNAME)
print('password:', self.PASSWORD)
if __name__ == "__main__":
MyTest.USERNAME = os.environ.get('TEST_USERNAME', MyTest.USERNAME)
MyTest.PASSWORD = os.environ.get('TEST_PASSWORD', MyTest.PASSWORD)
unittest.main()
Cela vous permettra de courir avec :
TEST_USERNAME=ausername TEST_PASSWORD=apassword python mytests.py
Et cela a l'avantage de ne pas perturber l'analyse des arguments d'unittest. L'inconvénient est que ça ne fonctionnera pas tout à fait comme ça sous Windows...