gpt4 book ai didi

python - Django setUpTestData() 与 setUp()

转载 作者:IT老高 更新时间:2023-10-28 20:34:30 37 4
gpt4 key购买 nike

Django 1.8 附带 a refactored TestCase它允许通过 setUpTestData() 使用事务和保存点在类级别初始化数据方法。这与 unittest 的 setUp() 形成对比。它在每个测试方法之前运行。

问题:既然存在 setUpTestData(),那么 setUp() 在 Django 中的用例是什么?

我只是在寻找客观、高层次的答案,否则这个问题对于 Stack Overflow 来说太宽泛了。

最佳答案

无法作为类方法运行的设置代码并不少见。一个值得注意的例子是 Django test client :您可能不想在共享大部分相同数据的测试中重复使用相同的客户端实例,事实上,自动包含在 Django 的 SimpleTestCase 子类中的客户端实例是 created per test method而不是整个类(class)。假设您在 Django 1.8 之前的世界中使用 setUp 方法进行了测试,如下所示:

    def setUp(self):        self.the_user = f.UserFactory.create()        self.the_post = f.PostFactory.create(author=self.the_user)        self.client.login(            username=self.the_user.username, password=TEST_PASSWORD        )        # ... &c.

您可能想通过将 setUp 更改为 setUpTestData、在顶部添加 @classmethod 装饰器并更改所有selfs 到 cls。但这将失败并出现 AttributeError: type object 'MyTestCase' has no attribute 'client'!相反,您应该对共享数据使用 setUpTestData,对 per-test-method 客户端使用 setUp:

    @classmethod    def setUpTestData(cls):        cls.the_user = f.UserFactory.create()        cls.the_post = f.PostFactory.create(author=cls.the_user)        # ... &c.    def setUp(self):        self.client.login(            username=self.the_user.username, password=TEST_PASSWORD        )

注意:如果您想知道示例代码中的变量 f 是做什么的,它来自 factoryboy - 一个有用的夹具库,用于为您的测试创建对象。

关于python - Django setUpTestData() 与 setUp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29428894/

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