Also sagen die Ärzte hier: "Sie sagen, das tut weh? Dann tun Sie das nicht!" sind wahrscheinlich richtig. Aber wenn Sie wirklich wollen, gibt es eine Möglichkeit, Argumente an einen Test zu übergeben:
import sys
import unittest
class MyTest(unittest.TestCase):
USERNAME = "jemima"
PASSWORD = "password"
def test_logins_or_something(self):
print('username : {}'.format(self.USERNAME))
print('password : {}'.format(self.PASSWORD))
if __name__ == "__main__":
if len(sys.argv) > 1:
MyTest.USERNAME = sys.argv.pop()
MyTest.PASSWORD = sys.argv.pop()
unittest.main()
das lässt dich laufen mit:
python mytests.py ausername apassword
Sie benötigen das argv.pops, damit Ihre Befehlszeilenparameter nicht mit den eigenen von unittest herumspielen ...
[Update] Das andere, was Sie vielleicht untersuchen möchten, ist die Verwendung von Umgebungsvariablen:
import os
import unittest
class MyTest(unittest.TestCase):
USERNAME = "jemima"
PASSWORD = "password"
def test_logins_or_something(self):
print('username : {}'.format(self.USERNAME))
print('password : {}'.format(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()
Damit können Sie laufen mit:
TEST_USERNAME=ausername TEST_PASSWORD=apassword python mytests.py
und es hat den Vorteil, dass Sie nicht mit der Analyse der eigenen Argumente von unittest herumspielen. Nachteil ist, dass es unter Windows nicht so funktioniert ...