Это мой код:
Ссылка на мой импорт находится здесь: https://github.com/django/django/blob/master/django/core/urlresolvers.py https://github.com/django/django/blob/master/django/contrib/auth/models.py https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/status.py https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/test.py
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from rest_framework import status
from rest_framework.test import APITestCase
class UserTests(APITestCase):
def test_create_user(self):
"""
Ensure we can create a new user object.
"""
url = reverse('user-list')
data = {'username': 'a', 'password': 'a', 'email': '[email protected]'}
# Post the data to the URL to create the object
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
# Check the database to see if the object is created.
# This check works.
self.assertEqual(User.objects.count(), 1)
def test_get_user(self):
"""
Ensure we can get a list of user objects.
"""
# This fails and returns an error
self.assertEqual(User.objects.count(), 1)
Когда я запускаю тест, он выдает ошибку AssertionError: 0 != 1
, потому что в функции test_get_user
пользователь, созданный в test_create_user
, не виден. Есть ли способ заставить все методы в классе совместно использовать одну и ту же базу данных, чтобы, если я создам пользователя в test_create_user
, я мог получить к нему доступ в методах, которые идут ниже?
Изменить: причина, по которой я хочу, чтобы они использовали одну и ту же базу данных для всех методов, заключается в том, что для всех моих тестовых случаев в классе UserTests
потребуется создать пользователя, поэтому я не хочу постоянно повторять один и тот же код, даже когда это проверено в test_create_user
.
Я знаю, что могу использовать def setUp(self)
, но я выполняю тест «создать пользователя» в своем первом методе, поэтому я хочу иметь возможность проверить, могу ли я сначала создать его, прежде чем создавать его в def setUp(self)
.
APITestCase
и ваш импорт. - person Sebastian Wozny   schedule 25.10.2015test_create_user
, а затем отдельный класс для модульного тестирования всего остального, что зависит от создания пользователя (чтобы я мог просто создать пользователя в методеdef setUp(self)
?). - person SilentDev   schedule 25.10.2015TestCase
. - person Ivan   schedule 25.10.2015User
(GET User, CREATE User, PATCH User, PUT User и DELETE User), в один класс, поскольку все они связаны. - person SilentDev   schedule 25.10.2015