You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
5.5 KiB

from django.test import TestCase, Client
from django.urls import reverse
from .models import (
AppMovie, AppMovie1, AppMovie2, AppMovie3, AppMovie4, AppMovieTheater
)
class MovieModelTests(TestCase):
def setUp(self):
# 创建 AppMovie 测试数据
self.app_movie = AppMovie.objects.create(
moviename='Test Movie',
moviedate='2024-10-01',
movieimge='test_image.jpg',
movietime='12:00',
movienum='001',
movietype='1'
)
# 创建 AppMovie1 测试数据
self.app_movie1 = AppMovie1.objects.create(
moviename='Test Movie 1',
moviedate='2024-10-02',
movieimge='test_image1.jpg',
movietime='13:00'
)
# 创建 AppMovie2 测试数据
self.app_movie2 = AppMovie2.objects.create(
moviename='Test Movie 2',
moviedate='2024-10-03',
movieimge='test_image2.jpg',
movietime='14:00'
)
# 创建 AppMovie3 测试数据
self.app_movie3 = AppMovie3.objects.create(
moviename='Test Movie 3',
moviedate='2024-10-04',
movieimge='test_image3.jpg',
movietime='15:00'
)
# 创建 AppMovie4 测试数据
self.app_movie4 = AppMovie4.objects.create(
moviename='Test Movie 4',
moviedate='2024-10-05',
movieimge='test_image4.jpg',
movietime='16:00',
movienum='004'
)
# 创建 AppMovieTheater 测试数据
self.app_movie_theater = AppMovieTheater.objects.create(
name='Test Theater'
)
def test_app_movie_model(self):
"""测试 AppMovie 模型的数据保存和获取"""
movie = AppMovie.objects.get(moviename='Test Movie')
self.assertEqual(movie.moviename, 'Test Movie')
self.assertEqual(movie.moviedate, '2024-10-01')
self.assertEqual(movie.movieimge, 'test_image.jpg')
self.assertEqual(movie.movietime, '12:00')
self.assertEqual(movie.movienum, '001')
self.assertEqual(movie.movietype, '1')
def test_app_movie1_model(self):
"""测试 AppMovie1 模型的数据保存和获取"""
movie = AppMovie1.objects.get(moviename='Test Movie 1')
self.assertEqual(movie.moviename, 'Test Movie 1')
self.assertEqual(movie.moviedate, '2024-10-02')
self.assertEqual(movie.movieimge, 'test_image1.jpg')
self.assertEqual(movie.movietime, '13:00')
def test_app_movie2_model(self):
"""测试 AppMovie2 模型的数据保存和获取"""
movie = AppMovie2.objects.get(moviename='Test Movie 2')
self.assertEqual(movie.moviename, 'Test Movie 2')
self.assertEqual(movie.moviedate, '2024-10-03')
self.assertEqual(movie.movieimge, 'test_image2.jpg')
self.assertEqual(movie.movietime, '14:00')
def test_app_movie3_model(self):
"""测试 AppMovie3 模型的数据保存和获取"""
movie = AppMovie3.objects.get(moviename='Test Movie 3')
self.assertEqual(movie.moviename, 'Test Movie 3')
self.assertEqual(movie.moviedate, '2024-10-04')
self.assertEqual(movie.movieimge, 'test_image3.jpg')
self.assertEqual(movie.movietime, '15:00')
def test_app_movie4_model(self):
"""测试 AppMovie4 模型的数据保存和获取"""
movie = AppMovie4.objects.get(moviename='Test Movie 4')
self.assertEqual(movie.moviename, 'Test Movie 4')
self.assertEqual(movie.moviedate, '2024-10-05')
self.assertEqual(movie.movieimge, 'test_image4.jpg')
self.assertEqual(movie.movietime, '16:00')
self.assertEqual(movie.movienum, '004')
def test_app_movie_theater_model(self):
"""测试 AppMovieTheater 模型的数据保存和获取"""
theater = AppMovieTheater.objects.get(name='Test Theater')
self.assertEqual(theater.name, 'Test Theater')
class MovieViewTests(TestCase):
def setUp(self):
self.client = Client()
# 创建 AppMovie 测试数据用于视图测试
self.app_movie = AppMovie.objects.create(
moviename='View Test Movie',
moviedate='2024-10-06',
movieimge='view_test_image.jpg',
movietime='17:00',
movienum='005',
movietype='1'
)
def test_movie_list_view(self):
"""测试 movielist 视图是否正确渲染"""
response = self.client.get(reverse('movieApp:movielist'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'index.html')
self.assertIn('movielist1', response.context)
self.assertIn('movielist2', response.context)
self.assertIn('movielist3', response.context)
self.assertIn('movielist4', response.context)
def test_detail_view_with_valid_id(self):
"""测试 detail 视图在传入有效 id 时是否正确渲染"""
response = self.client.get(reverse('movieApp:detail', args=[self.app_movie.id]))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'detail.html')
self.assertEqual(response.context['movie'].moviename, 'View Test Movie')
def test_detail_view_with_invalid_id(self):
"""测试 detail 视图在传入无效 id 时是否返回 404 错误"""
invalid_id = 9999
response = self.client.get(reverse('movieApp:detail', args=[invalid_id]))
self.assertEqual(response.status_code, 404)