django 测试 setUp 和 --keepdb

django tests setUp and --keepdb

我有很多迁移无法删除。因此,当我 运行 测试时,它会花费太多时间,除非我 运行 它们与 --keepdb 完美。唯一的问题是 --keepdbsetUp 方法如何协同工作。在测试的 setUp 方法中,我做了这样的事情:

class APITests(APITestCase):

    fixtures = ['tests/testdata.json']

    def setUp(self):
        username = "test"
        password = "1234"

        user_created = User.objects.create_user(username=username, password=password)

        body = {
            "username": username,
            "password": password
        }

        cart = Cart.objects.create()
        Client.objects.create(user=user_created, cart=cart)

APITestCase 只是 django 测试 class 的 django rest 框架包装器。我为该用户创建了一个用户、一个客户和一个购物车。如果我用 --keepdb 重新 运行 测试,setUp 方法会创建重复的用户或购物车吗?在这种情况下它是如何工作的?

setUp 方法在 APITests 中的每个测试用例之前运行。因为每个测试都在一个事务中运行,所以创建的任何对象都会在每个测试结束时销毁。

keepdb 选项对此完全没有影响。

您可以使用 setupTestData 来提高测试效率。