Ik begrijp geen tests in Django, kan je me alsjeblieft helpen?

Ik heb het moeilijk met testen in Django en Python, voor mijn laatste project maak ik een forumswebsite, maar ik heb geen idee hoe of wat mijn tests zouden moeten zijn. Hier is de weergavepagina van mijnsitebestand. Kan iemand me doorlaten waar ik op moet letten, of een gebruiker is ingelogd?

from django.core.urlresolvers import reverse
from settings import MEDIA_ROOT, MEDIA_URL
from django.shortcuts import redirect, render_to_response
from django.template import loader, Context, RequestContext
from mysite2.forum.models import *

def list_forums(request):
     """Main listing."""
     forums = Forum.objects.all()
     return render_to_response("forum/list_forums.html", {"forums":forums},      context_instance=RequestContext(request))



def mk_paginator(request, items, num_items):
    """Create and return a paginator."""
    paginator = Paginator(items, num_items)
    try: page = int(request.GET.get("page", '1'))
    except ValueError: page = 1

    try:
        items = paginator.page(page)
    except (InvalidPage, EmptyPage):
        items = paginator.page(paginator.num_pages)
    return items


def list_threads(request, forum_slug):
    """Listing of threads in a forum."""
    threads = Thread.objects.filter(forum__slug=forum_slug).order_by("-created")
    threads = mk_paginator(request, threads, 20)
     template_data = {'threads': threads} 
    return render_to_response("forum/list_threads.html", template_data, context_instance=RequestContext(request))

def list_posts(request, forum_slug, thread_slug):
    """Listing of posts in a thread."""
    posts = Post.objects.filter(thread__slug=thread_slug,  thread__forum__slug=forum_slug).order_by("created")
    posts = mk_paginator(request, posts, 15)
    thread = Thread.objects.get(slug=thread_slug)
    template_data = {'posts': posts, 'thread' : thread}
    return render_to_response("forum/list_posts.html", template_data, context_instance=RequestContext(request))

def post(request, ptype, pk):
    """Display a post form."""
    action = reverse("mysite2.forum.views.%s" % ptype, args=[pk])
    if ptype == "new_thread":
        title = "Start New Topic"
        subject = ''
    elif ptype == "reply":
        title = "Reply"
        subject = "Re: " + Thread.objects.get(pk=pk).title
    template_data = {'action': action, 'title' : title, 'subject' : subject}

    return render_to_response("forum/post.html", template_data, context_instance=RequestContext(request))

def new_thread(request, pk): 
    """Start a new thread."""
    p = request.POST
    if p["subject"] and p["body"]:
        forum = Forum.objects.get(pk=pk)
        thread = Thread.objects.create(forum=forum, title=p["subject"], creator=request.user)
        Post.objects.create(thread=thread, title=p["subject"], body=p["body"], creator=request.user)
     return HttpResponseRedirect(reverse("dbe.forum.views.forum", args=[pk]))

def reply(request, pk):
    """Reply to a thread."""
     p = request.POST
    if p["body"]:
        thread = Thread.objects.get(pk=pk)
        post = Post.objects.create(thread=thread, title=p["subject"],         body=p["body"],
        creator=request.user)
     return HttpResponseRedirect(reverse("dbe.forum.views.thread", args=[pk]) +      "?page=last")
3
U kunt doorlopen en testen om te controleren of elke sjabloon wordt geladen. Gebruik de django-testclient
toegevoegd de auteur dm03514, de bron

2 antwoord

Lees eerst de Django testdocumentatie . Misschien wilt u ook dit boek lezen. Het is in sommige gebieden gedateerd, maar testen is nu nog steeds vrijwel hetzelfde als in 1.1.

Het is een beetje een onderwerp dat je in een SO-antwoord moet behandelen.

3
toegevoegd
Ik heb ze gelezen en ik heb een boek, maar ik begrijp niet veel behalve login-validatie. Moet ik me zelfs bezighouden met een andere validatie?
toegevoegd de auteur Robert, de bron
Validatie en testen zijn niet hetzelfde. Validatie is waar u de gebruikersinvoer op geestelijke gezondheid controleert. Testen is waar u bekende ingangen aan uw code toevoegt en controleert of de uitgangen overeenkomen met de verwachte waarden, voor starters. Waar heb je het over?
toegevoegd de auteur Mike DeSimone, de bron

Nou, je zou kunnen testen:

  • Als u het juiste aantal pagina's hebt voor de objecten die u pagineert.
  • Als de pagina die u bekijkt het juiste objectbereik bevat. Als u probeert toegang te krijgen tot een pagina die niet bestaat, geeft u de passende fout.
  • Als uw weergaven voor lijstobjecten en objectdetails de juiste HTTP-statuscode (200) retourneren

Voor starters. Ik hoop dat het je helpt.

1
toegevoegd
Graag gedaan. Een goede vuistregel is dat u een test nodig hebt voor bijna alles wat u zelf schrijft, of het nu een methode of een eigenschap van een model is, naar een weergavefunctie waarvan wordt verwacht dat deze een bepaalde uitkomst heeft, enzovoort. Mogelijk heeft u een kijk naar Karen Tracey's uitstekende boek over Django testen en debuggen: amazon.com/Django-Testing-Debugging-Karen-Tracey/dp/18471975‌ 66/& hellip;
toegevoegd de auteur Brandon, de bron
ja bedankt Dat is een goed begin
toegevoegd de auteur Robert, de bron