django测试setUp和--keepdb

时间:2017-01-09 22:59:11

标签: django django-testing

我有很多很多我无法删除的迁移。因此,当我运行测试时,除非我使用--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测试类的django rest框架包装器。我为该用户创建了一个用户,一个客户端和一个购物车。如果我使用--keepdb重新运行测试,setUp方法是否会创建重复的用户或购物车?在这种情况下它是如何工作的?

1 个答案:

答案 0 :(得分:2)

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

keepdb选项根本不会影响这一点。

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