gpt4 book ai didi

python - 如何在 Python (2.7) 单元测试中参数化 setUpClass()

转载 作者:行者123 更新时间:2023-12-02 04:16:39 26 4
gpt4 key购买 nike

我目前正在实现一种在值之间进行插值、边界处理等的表格,并希望为其编写单元测试。

有很多可能的场景,例如表只能有一个/多个行/列和不同的边界条件。所有这些场景中的表都应该通过同一组单元测试。

现在,我正在为其中一种情况编写一个基类,并从中派生并重写 setUpClass() 方法。然而,这对于测试所有组合来说是乏味的。

是否可以生成 TestCase 类,使用不同的参数动态运行它们。

在谷歌搜索问题时,我发现最好的事情是重载 load_tests() 并一一添加所有测试方法(这意味着在运行每个测试方法之前设置对象,而不是每个测试方法一次场景)。

最佳答案

感谢@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

这样,测试用例就会使用不同的参数动态创建,并在 PyCharm 的测试运行选项卡中单独列出。

关于python - 如何在 Python (2.7) 单元测试中参数化 setUpClass(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com