Django Testing: использование декоратора входа в систему для тестовых случаев - PullRequest
2 голосов
/ 20 января 2012

У меня проблема с использованием декоратора входа в мои тесты django.Многие тесты начинаются с

self.client.login(username='foo', password='bar')

Итак, логин работает в принципе;Но теперь мне нравится реорганизовать эту строку кода в декоратор login, просто для удовольствия:

def login(fn):
    def wrapper(self):
        self.client.login(username='foo', password='bar')
        return fn(self)
    return wrapper

Но неудачные тесты показывают, что пользователь 'foo' не вошел даже self.client.login возвращает True.

Еще одна загадочная вещь, когда я теперь оставляю self.client.login из декоратора так, что декоратор ничего не делает, кроме переноса, нормальный вход в систему из декорированного тестового метода также становится невозможным.!

Я думаю, что есть проблема контекста или области действия с тестовым клиентом.Ты хоть представляешь, каким может быть зонд?PS: вся история про python2.7 и django-1.3.1.

1 Ответ

3 голосов
/ 25 апреля 2012

Пожалуйста, смотрите python-unittest-cant-call-decor-test

АЛЬТЕРНАТИВЫ?

Так как это всегда был один и тот же пользователь, у меня он был в setUp.

class SimpleTest(TestCase):
    def setUp(self):
        self.client.login(username='foo', password='bar')

Вот интересный гист - тестовый пример Django для ленивого человека , позволяющий входить в систему с ограниченным доступом.

...