我开始为我的django应用程序编写测试,我想知道是否有一种方法可以测试,同时在多个模型中的某些功能是相同的。例如,如果我想测试我的所有类中出现的__unicode__()
方法,而不是为每个模型编写测试,是否可以优化它并为所有模型测试一次?
答案 0 :(得分:0)
我认为这是可能的,但我更愿意在seprerate unit_tests中使用seprerate TestModels测试用例。我认为更多的测试是更好的方法,因为如果您将来更改应用程序中的方法,则只需要更改一个测试。如果您只对所有模型进行一次测试,那么您将需要:
在我看来,这是浪费时间。
我想到的第一个想法是你导入所有模型并将它们打包在一个列表中,然后你可以使用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'