所以这里的医生说“你说那很痛?那就不要那样做!” 可能是对的。但是,如果您真的想要,这是将参数传递给单元测试测试的一种方法:
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()
这将让你运行:
python mytests.py myusername mypassword
您需要argv.pop
s,因此您的命令行参数不会与 unittest 自己的参数混淆...
您可能想要研究的另一件事是使用环境变量:
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()
这将让你运行:
TEST_USERNAME=ausername TEST_PASSWORD=apassword python mytests.py
它的优点是你不会弄乱 unittest 自己的参数解析。缺点是它不会像在 Windows 上那样工作......