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
4.9 KiB

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')