unittest,web自动化

麻烦各位看一下这个问题,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

运行结果:

img

以下回答结合了ChatGPT:
在使用ddt时,@ddt.data()可以用来传递测试数据,但是如果没有传递参数,则默认使用方法或类的名称来生成测试数据。在这种情况下,使用@ddt.data()是为了让测试用例可以根据测试数据自动执行多次。因此,如果没有传递参数,那么测试用例就只会执行一次,使用@ddt.data()的意义就没有体现出来。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^