from django.test import TestCase, Client from django.urls import reverse from userApp.models import User, Birthday, VIP import json class UserAppTestCase(TestCase): def setUp(self): self.client = Client() # 创建测试用的生日记录 self.birthday = Birthday.objects.create( username='testuser', year='2000', month='1', day='1' ) # 创建测试用的 VIP 记录 self.vip = VIP.objects.create( vipname='testuser', level='普通会员', score=0, money=0 ) # 创建测试用的用户记录 self.user = User.objects.create( realname='测试用户', username='testuser', password='testpassword', email='test@example.com', phonenumber='1234567890', gender='男', age='20', personality='开朗', image='test.jpg', birthday=self.birthday, vip=self.vip ) def test_login(self): # 测试登录功能 response = self.client.post(reverse('login'), { 'username': 'testuser', 'password': 'testpassword' }) self.assertEqual(response.status_code, 302) # 登录成功应重定向 def test_register(self): # 测试注册功能 response = self.client.post(reverse('register'), { 'realname': '新用户', 'username': 'newuser', 'email': 'new@example.com', 'phone_num': '0987654321', 'password': 'newpassword', 'gender': '女', 'age': '25' }) self.assertEqual(response.status_code, 200) # 注册成功应返回登录页面 def test_account(self): # 测试账号唯一性验证 response = self.client.get(reverse('account'), {'username': 'testuser'}) data = json.loads(response.content) self.assertEqual(data['msg'], 'exist') response = self.client.get(reverse('account'), {'username': 'nonexistentuser'}) data = json.loads(response.content) self.assertEqual(data['msg'], 'ok') def test_codecheck(self): # 测试验证码检验 response = self.client.get(reverse('codecheck'), {'value': ''}) data = json.loads(response.content) self.assertEqual(data['msg'], 'null') def test_sendcode(self): # 测试发送验证码 response = self.client.get(reverse('sendcode'), {'email': 'test@example.com'}) data = json.loads(response.content) self.assertEqual(data['msg'], 'ok') def test_userinfo(self): # 测试用户信息展示与修改 self.client.login(username='testuser', password='testpassword') response = self.client.get(reverse('userinfo')) self.assertEqual(response.status_code, 200) response = self.client.post(reverse('userinfo'), { 'username': 'testuser', 'realname': '修改后的姓名', 'gender': '男', 'age': '21', 'personality': '内向', 'phonenumber': '1234567890', 'email': 'test@example.com', 'year': '2000', 'month': '1', 'day': '1' }) self.assertEqual(response.status_code, 200) def test_movieorder(self): # 测试电影订单展示与删除 self.client.login(username='testuser', password='testpassword') response = self.client.get(reverse('movieorder'), {'type': '2'}) self.assertEqual(response.status_code, 200) def test_mallorder(self): # 测试商城订单展示与删除 self.client.login(username='testuser', password='testpassword') response = self.client.get(reverse('mallorder'), {'type': '2'}) self.assertEqual(response.status_code, 200) def test_upload(self): # 测试头像上传 self.client.login(username='testuser', password='testpassword') with open('path/to/test/image.jpg', 'rb') as image: response = self.client.post(reverse('upload'), {'image': image}) data = json.loads(response.content) self.assertEqual(data['state'], 1) def test_charge(self): # 测试充值功能 self.client.login(username='testuser', password='testpassword') response = self.client.get(reverse('charge'), {'money': '100'}) data = json.loads(response.content) self.assertEqual(data['msg'], 'pass') def test_cancel(self): # 测试取消订单功能 self.client.login(username='testuser', password='testpassword') # 这里需要先创建一个订单才能测试取消功能 # 假设已经创建了一个订单,订单 id 为 1 response = self.client.post(reverse('cancel'), {'id': '1'}) data = json.loads(response.content) self.assertEqual(data['msg'], 'pass')