model_mommy - отношение пользователя к назначению
Я наконец настраиваю тестирование для своего приложения Django, но у меня возникают трудности с началом работы. я использую model_mommy
создать динамические данные для моих тестов, но иметь следующую проблему:
Представление, которое я тестирую, должно показать мне все assignments
конкретный пользователь должен завершить. Чтобы проверить это, я хочу создать 500 заданий, войти в приложение и проверить, отображаются ли они. Пока у меня есть следующие тестовые случаи:
class TestLogin(TestCase):
def setUp(self):
self.client = Client()
user = User.objects.create(username='sam')
user.set_password('samspassword')
user.save()
def test_login(self):
self.client.login(username='sam', password='samspassword')
response = self.client.get('/')
print (response.content)
self.assertEqual(response.status_code, 200)
а также
class TestShowAssignments(TestCase):
def setUp(self):
user_recipe = Recipe(User, username='sam', password="samspassword")
self.assignment = Recipe(Assignment,
coders = related(user_recipe))
self.assignments = self.assignment.make(_quantity=500)
def test_assignments(self):
self.assertIsInstance(self.assignments[0],Assignment)
self.assertEqual(len(self.assignments),500)
Первый тест проходит нормально и делает то, что должен: TestLogin
регистрирует пользователя и показывает его страницу аккаунта. Беда начинается с TestShowAssignments
, который создает 500 назначений, но если я смотрю на назначения с print (self.assignments[0].coders)
, Я получил auth.User.None
, Таким образом, он не добавляет пользователя, которого я определил как отношение к назначениям. Здесь может быть важно то, что coders
поле в модели - это поле m2m, к которому я попытался обратиться, используя related
, но это не похоже на работу.
Что также не работает, так это вход в систему: если я использую тот же код, который я использую для входа во время TestLogin
в TestShowAssignments
Я не могу войти и увидеть страницу пользователя.
Итак, мой вопрос: как мне использовать model_mommy
создать назначения и добавить их конкретному пользователю, чтобы я мог войти в систему под этим пользователем и посмотреть, правильно ли отображаются назначения?
1 ответ
Вы хотите 500 назначений, которые все имеют пользователя "sam" как одну запись в поле 'coders'? Если это так, попробуйте:
from model_mommy import mommy
...
class TestShowAssignments(TestCase):
def setUp(self):
self.user = mommy.make(User, username='sam', password='samspassword')
self.assignments = mommy.make(Assigment, coders=[self.user], _quantity=500)