2017-01-09 53 views
0

我有很多很多迁移,我无法删除。所以当我运行测试时,除非我用--keepdb这是完美的,否则它会花费太多时间。唯一的问题是--keepdbsetUp方法是如何协同工作的。在测试的setUp方法我做这样的事情:django测试setUp和--keepdb

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方法是否会创建重复的用户或购物车?它在这种情况下如何工作?

回答

2

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

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

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

+1

感谢您的setupTestData参考! – alejoss