麻烦各位看一下这个问题,unittest 中ddt数据驱动,为什么ddt.data()没有传参.
def create_test(test_suite):
@ddt.ddt
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.driver = get_webdriver()
@classmethod
def tearDownClass(cls) -> None:
cls.driver.quit()
print("6666")
print(*test_suite["cases"].values())
@ddt.data(*test_suite["cases"].values()) # 通过数据生成用例
def test(self, case):
print(case)
print("33333")
key_word = action.KeyWord(driver=self.driver)
for step in case["steps"]:
print("步骤", step)
f = getattr(key_word, f"key_{step[2]}")
f(*step[3])
print("用例结束")
return Test
运行结果:
以下回答结合了ChatGPT:
在使用ddt时,@ddt.data()可以用来传递测试数据,但是如果没有传递参数,则默认使用方法或类的名称来生成测试数据。在这种情况下,使用@ddt.data()是为了让测试用例可以根据测试数据自动执行多次。因此,如果没有传递参数,那么测试用例就只会执行一次,使用@ddt.data()的意义就没有体现出来。