2017-04-11 85 views
0

我開始爲我的django應用程序編寫測試,我想知道是否有一種測試方法,同時在多個模型中有相同的功能。例如,如果我想測試所有類中出現的__unicode__()方法,而不是爲每個模型編寫測試,那麼是否可以對所有模型進行優化並對其進行一次測試?用一個測試用例測試所有的django模型

+0

https://docs.pytest.org/en/latest/parametrize.html – allcaps

回答

0

我認爲這是可能的,但我更願意在seprerate TestModels測試用例中單獨使用unit_tests來做這件事。我認爲更多的測試是更好的方法,因爲如果您將來在應用程序中更改某種方法,則只需更改一個測試。如果您對所有型號,然後你將只需要一個測試:

  1. 修復組測試
  2. 編寫另一個測試來處理一個模型

這在我看來是一種浪費的時間。

我想到的第一個想法是,您導入所有模型並將它們打包在一個列表中,然後您可以使用for循環來執行這些方法。只是這樣做

from app.models import Model1, Model2, Model3 

models_list = [Model1,Model2,Model3] 

for mod in models_list: 
    mod.method() 
0

this answer,你可以這樣做:

from django.db.models import get_app, get_models 

# In your test method: 
app = get_app('my_application_name') 
for model in get_models(app): 
    assert unicode(model(something='something')) == u'expected unicode' 
+0

可悲的是這種解決方案depricated。我嘗試使用'從django.apps導入應用程序'和'在apps.get_model()模型:'但是我有0運氣 – Code4fun

相關問題