2017-01-31 1 views
1

Wir führen Komponententests in Python aus, die zuvor fest mit Informationen codiert wurden, z. B. auf welchem ​​Server Tests ausgeführt werden sollen. Stattdessen möchte ich diese Informationen über das Befehlszeilenargument an den Test übergeben. Das Problem ist, dass ich bei der Verwendung des Python-Unit-Test-Frameworks meine benutzerdefinierten Parameter als einen einzelnen Parameter aufrufe, der dann von utrunner.py abgefangen wird, der davon ausgeht, dass der Parameter angibt, welche Tests ausgeführt werden (bezüglich der Test-Discovery).Verwendung von Parametern in Komponententests in Python 3.x von IDEA

Also von IDEA läuft ich diesen Befehl senden die Testsuite zu starten:

C:\Users\glenp\AppData\Local\Programs\Python\Python36-32\python.exe C:\Users\glenp\.IntelliJIdea2016.3\config\plugins\python\helpers\pycharm\utrunner.py C:\Root\svn\trunk\src\test\python\test.py "server=deathStar language=klingon" true 

Dieser Parameter ist, die von print(sys.argv) zu mir zurück gelesen werden:

['C:\\Users\\glenp\\.IntelliJIdea2016.3\\config\\plugins\\python\\helpers\\pycharm\\utrunner.py', 'C:\\Root\\svn\\trunk\\src\\test\\python\\schedulePollTest.py', 'server=deathStar language=klingon', 'true'] 

Hinweis, ich Ich nenne nicht wirklich meinen eigenen Test, ich nenne das utrunner.py mit meinem Test als eines der Argumente dafür.

Ich bekomme einen FileNotFound Fehler: FileNotFoundError: [Errno 2] No such file or directory: 'server=deathStar language=klingon' der den Test tötet, bevor ich es ausführen kann.

Ich glaube, ich brauche zu ändern, entweder diese:

if __name__ == "__main__": 
    unittest.main() 

oder dies:

class testThatWontRun(unittest.TestCase): 

I imp.py ändern könnte, was den Fehler zu werfen, aber ich zufällig auf einem sein Team und ändern Kern Python-Funktionalität wird überhaupt nicht gut skalieren. (Und jeder im Team wird traurig sein)

Also, gibt es eine Möglichkeit, meine Argumente so zu formulieren, dass utrunner.py (und imp.py) diese Parameter ignoriert?

Antwort

0

Ja, es gibt eine Möglichkeit, die utrunner.py-Parameter zu ignorieren: Setzen Sie a - vor den Parameter, den Sie ignorieren möchten.

so server = death wird --server = death

Danke gummiducky :)