2017-01-09 67 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

相關問題