我不是新手测试,但是对于在Django中测试不同层的一堆建议感到非常困惑.
一些人建议(并且他们是对的)避免模型中的Doctests因为它们不可维护...
其他人说不使用灯具,因为它们比辅助功能灵活性差,例如..
还有两组人在争取使用Mock对象.第一组相信使用Mock并隔离系统的其余部分,而另一组则更喜欢停止模拟 并开始测试 ..
我上面提到的,主要是关于测试模型.功能测试是另一个故事(使用test.Client()VS webTest VS等)
是否有任何可维护,可行且适当的方法来测试不同的层?
UPDATE
我知道Carl Meyer在PyCon 2012上的演讲.
我们可以在表单的"元类"部分中定义多个模型吗?
这是我的例子:
from django import forms
from django.contrib.auth.models import User , Group
from django.forms import ModelForm
from django.utils.translation import ugettext as _
from profiles.models import Student , Tutor
class RegistrationForm(ModelForm):
email = forms.EmailField(label=_('Email Address:'))
password = form.CharField(label=_('Passsword:') , widget = forms.PasswordInput(render_value = False))
password1 = form.CharField(label=_('Verify Passsword:') , widget = forms.PasswordInput(render_value = False))
class Meta:
model = [Student , Tutor] ## IS THIS TRUE ???
Run Code Online (Sandbox Code Playgroud) 我们如何使用通用视图和django-mptt实现CRUD功能?我搜索了很多,找不到一个教程/示例代码.
假设我们有一个课程层次结构或类别层次结构,或者类似的东西...我们如何添加/删除/更新/读取它们?
比如我有这个模型:
from django.db import models
from mptt.models import MPTTModel , TreeForeignKey
class Genre(MPTTModel):
name = models.CharField(max_length = 50 , unique = True)
parent = TreeForeignKey('self' , null = True , blank = True , related_name = 'children')
class MPTTMeta:
order_insertion_by = ['name']
Run Code Online (Sandbox Code Playgroud)
这个views.py:
from django.views.generic.list_detail import object_list
from mp.models import Genre
def genres_list(request):
''' Shows all of the genres '''
return object_list(request,
queryset = Genre.tree.all() ,
template_name = 'genres.html' ,
# template_object_name = 'nodes' …Run Code Online (Sandbox Code Playgroud) 我正在阅读"黑客攻击,剥削艺术"一书,这个代码示例让我很困惑.
它位于全局变量范围的上下文中:
#include <stdio.h>
void function() { // An example function, with its own context
int var = 5;
static int static_var = 5; // Static variable initialization
printf("\t[in function] var = %d\n", var);
printf("\t[in function] static_var = %d\n", static_var);
var++; // Add one to var.
static_var++; // Add one to static_var.
}
int main() { // The main function, with its own context
int i;
static int static_var = 1337; // Another static, in a different context
for(i=0; i …Run Code Online (Sandbox Code Playgroud) django ×3
c ×1
crud ×1
debugging ×1
django-admin ×1
django-forms ×1
django-mptt ×1
tdd ×1
testing ×1