使用一个测试用例测试所有django模型

时间:2017-04-11 12:43:59

标签: python django django-models django-testing

我开始为我的django应用程序编写测试,我想知道是否有一种方法可以测试,同时在多个模型中的某些功能是相同的。例如,如果我想测试我的所有类中出现的__unicode__()方法,而不是为每个模型编写测试,是否可以优化它并为所有模型测试一次?

2 个答案:

答案 0 :(得分:0)

我认为这是可能的,但我更愿意在seprerate unit_tests中使用seprerate TestModels测试用例。我认为更多的测试是更好的方法,因为如果您将来更改应用程序中的方法,则只需要更改一个测试。如果您只对所有模型进行一次测试,那么您将需要:

  1. 修复群组测试
  2. 编写另一个测试以处理一个模型
  3. 在我看来,这是浪费时间。

    我想到的第一个想法是你导入所有模型并将它们打包在一个列表中,然后你可以使用for循环来执行这些方法。做这样的事情

    from app.models import Model1, Model2, Model3
    
    models_list = [Model1,Model2,Model3]
    
    for mod in models_list:
        mod.method()
    

答案 1 :(得分: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'