如何解决使用django manage.py test命令
我有一个测试用例来测试我的注册API,在该API中,如果电子邮件已被使用,它将进行响应;如果创建成功,它将返回相同的电子邮件ID。
tests.py
class SignupTestCase(APITestCase):
url = reverse('todos:signup')
@classmethod
def setUpTestData(self):
self.random_num = random.randint(100,999)
self.username = f'Testing{self.random_num}'
self.email = f'Testing{self.random_num}@gmail.com'
self.password = f'Testing{self.random_num}'
def test_signup_pass(self):
payload = {
'username': self.username,'email': self.email,'password': self.password,}
response = self.client.post(self.url,payload)
res_data = json.loads(response.content)
self.assertEqual(response.status_code,200)
self.assertEqual(res_data.get('email'),self.email)
self.assertEqual(res_data.get('error'),None)
def test_signup_fail(self):
payload = {
'username': self.username,None)
self.assertEqual(res_data.get('error'),'Email is taken')
在这里,第二个测试test_signup_fail必须通过,因为我使用的是与test_signup_pass中使用的电子邮件相同的电子邮件,因此它应该在django注册方法中引发IntegrityError并在“接收电子邮件”时返回错误消息。 / p>
views.py
from django.http import JsonResponse
from django.contrib.auth.models import User
from rest_framework.views import APIView
from django.db import IntegrityError
# Create your views here.
class signup(APIView):
def post(self,request):
data = request.data
email = data.get('email')
password = data.get('password')
username = data.get('username')
user = User()
user.email = email
user.password = password
user.username = username
try:
user.save()
except IntegrityError:
return JsonResponse({'error': 'Email is taken'})
return JsonResponse({'success': 'Successfully registered','email': user.email})
输出
py manage.py test todos
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
F.
======================================================================
FAIL: test_signup_fail (todos.tests.SignupTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/g33k/Programming/django-learning/wordcount-project/todos/tests.py",line 42,in test_signup_fail
self.assertEqual(res_data.get('email'),None)
AssertionError: 'Testing348@gmail.com' != None
----------------------------------------------------------------------
Ran 2 tests in 0.010s
FAILED (failures=1)
Destroying test database for alias 'default'...
我什至用pdb检查了视图,
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
> views.py(19)post()
-> try:
(Pdb) user
<User: Testing502>
(Pdb) n
> /views.py(20)post()
-> user.save()
(Pdb) n
> /views.py(24)post()
-> return JsonResponse({'success': 'Successfully registered','email': user.email})
(Pdb) c
F> /views.py(19)post()
-> try:
(Pdb) user
<User: Testing502>
(Pdb) n
> /views.py(20)post()
-> user.save()
(Pdb) n
> /views.py(24)post()
-> return JsonResponse({'success': 'Successfully registered','email': user.email})
(Pdb)
所以,我的问题是,每种测试方法都使用不同的数据库,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。