ここにいる医者たちは「痛いって言ったでしょ?そんなことしないで!」と言っているのです。おそらく正しいです。しかし、どうしてもやりたい場合は、単体テスト テストに引数を渡す 1 つの方法を次に示します。
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
sが必要なargv.pop
ので、コマンド ライン パラメータが 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
また、ユニットテスト自体の引数の解析をいじらないという利点があります。欠点は、Windowsではそのように機能しないことです...