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