Python - 如何屏蔽 class 在运行时在单元测试中执行
Python - How to mask a class from being executed in unittest on runtime
请看下面的代码。我正在尝试为我的项目实施测试套件
import unittest
class TestClass1(unittest.TestCase):
def test_1_first(self):
print("First test case")
def test_2_second(self):
print("Second test case")
class TestClass2(unittest.TestCase):
def test_3_third(self):
print("Third test case")
def test_4_fourth(self):
print("Fourth test case")
if __name__ == "__main__":
# val = 1 <-- getting from user
# if val == 1:
# Execute test cases in TestClass2
# else
# Execute test cases in TestClass1\
unittest.main()
我将获得 class 名称作为 命令行参数 并且我需要 运行 每个 class 根据参数进行测试.意味着我需要 select 和 运行 一些 class 的测试用例 运行 时间。 那么谁能帮我防止 class 在 运行 时间 执行单元测试?问题是执行时不允许使用传递class名称的方法
unittest.main()
已经解析 sys.argv
以允许 运行 特定 类 或个别测试。
例如,如果您的脚本名为 test.py
,您可以 运行 以下 运行 只是 TestClass1
:
python test.py __main__.TestClass1
或以下 运行 只是 TestClass1.test_1_first
:
python test.py __main__.TestClass1.test_1_first
如果您希望在脚本中执行此操作,可以将您想要的测试名称作为 defaultTest
参数传递给 运行:
unittest.main(defaultTest='__main__.TestClass1')
那已经是 built-in。您可以通过命令 运行 具体 class:
python -m unittest test_module.TestClass1
如果您确实需要在您的脚本中这样做,您可以将您的 classes 传递给 unittest.TestLoader().loadTestsFromName
,然后 运行 测试套件与 unittest.TextTestRunner().run(suite)
。它看起来像这样:
test_suite = unittest.TestLoader().loadTestsFromName('__main__.TestClass1')
unittest.TextTestRunner().run(test_suite)
请看下面的代码。我正在尝试为我的项目实施测试套件
import unittest
class TestClass1(unittest.TestCase):
def test_1_first(self):
print("First test case")
def test_2_second(self):
print("Second test case")
class TestClass2(unittest.TestCase):
def test_3_third(self):
print("Third test case")
def test_4_fourth(self):
print("Fourth test case")
if __name__ == "__main__":
# val = 1 <-- getting from user
# if val == 1:
# Execute test cases in TestClass2
# else
# Execute test cases in TestClass1\
unittest.main()
我将获得 class 名称作为 命令行参数 并且我需要 运行 每个 class 根据参数进行测试.意味着我需要 select 和 运行 一些 class 的测试用例 运行 时间。 那么谁能帮我防止 class 在 运行 时间 执行单元测试?问题是执行时不允许使用传递class名称的方法
unittest.main()
已经解析 sys.argv
以允许 运行 特定 类 或个别测试。
例如,如果您的脚本名为 test.py
,您可以 运行 以下 运行 只是 TestClass1
:
python test.py __main__.TestClass1
或以下 运行 只是 TestClass1.test_1_first
:
python test.py __main__.TestClass1.test_1_first
如果您希望在脚本中执行此操作,可以将您想要的测试名称作为 defaultTest
参数传递给 运行:
unittest.main(defaultTest='__main__.TestClass1')
那已经是 built-in。您可以通过命令 运行 具体 class:
python -m unittest test_module.TestClass1
如果您确实需要在您的脚本中这样做,您可以将您的 classes 传递给 unittest.TestLoader().loadTestsFromName
,然后 运行 测试套件与 unittest.TextTestRunner().run(suite)
。它看起来像这样:
test_suite = unittest.TestLoader().loadTestsFromName('__main__.TestClass1')
unittest.TextTestRunner().run(test_suite)