感謝@jonrsharpe的提示,我設法做到了。
我的解決方案是動態創建的類,然後將它們添加到使用load_tests
TestSuite的:
def create_test_case(testcase_name, scenario_data):
class ScenarioTestCase(BaseTestCase):
@classmethod
def setUpClass(cls):
cls.fillClassVariables(scenario_data)
return_class = ScenarioTestCase
return_class.__name__ = testcase_name #for separating the results
return return_class
def load_tests(loader, tests, pattern):
list_scenario_names = [...]
list_scenario_data = [...]
loader = unittest.TestLoader()
tests = TestSuite()
for scenario_name, scenario_data in zip(list_scenario_names, list_scenario_data):
tests.addTests(loader.loadTestsFromTestCase(
create_test_case(scenario_name, scenario_data)))
return tests
這樣的TestCase對象與不同的參數,動態創建和PyCharm的測試運行選項卡單獨列出。
來源
2015-10-21 14:51:13
Tim
爲什麼不寫一個類工廠,基於該方案的具體要求'setUpClass'創建你的主要測試類的子類? – jonrsharpe
您可以使用[鼻子測試生成器](http://nose.readthedocs.org/en/latest/writing_tests.html#test-generators)或[pytest參數化方法](https:// pytest)創建參數化測試序列。組織/最新/ parametrize.html)。 –
@jonrsharpe這工作。我沒有想到的主要原因是我不知道如何讓PyCharm(或'unittest discover')知道創建的類。我現在設法使用'load_tests()'來完成它。 – Tim