好的,我给你一个最简单的 Django 测试示例,包括模型、视图和测试用例。
1. 定义模型 models.py
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
2. 定义视图 views.py
from django.shortcuts import render, get_object_or_404
from .models import Person
from django.http import JsonResponse
def index(request):
person_id = request.GET.get("id")
person = get_object_or_404(Person, id=person_id)
return render(request, "index.html", {"person": person})
def api(request):
return JsonResponse({"msg": "hello world"})
3. 测试用例 tests.py
from django.test import TestCase, Client
from .models import Person
class PersonTest(TestCase):
def setUp(self):
Person.objects.create(name="Lucy", age=10)
Person.objects.create(name="May", age=12)
def test_model_data(self):
lucy = Person.objects.get(name="Lucy")
may = Person.objects.get(name="May")
self.assertEqual(lucy.age, 10)
self.assertEqual(may.age, 12)
def test_api_view(self):
client = Client()
response = client.get("/api/")
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), {"msg": "hello world"})
def test_html_view(self):
client = Client()
response = client.get("/?id=2")
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "index.html")
self.assertEqual(response.context["person"].name, "May")
4. 运行测试
在项目根目录运行:
python manage.py test
Django 会自动发现 tests.py
文件里的测试类,并运行其中所有以 test_
开头的方法。