2016-05-12 2 views
2

Пожалуйста, помогите мне. В настоящее время мне поручено создать тестовый скрипт для метода входа.Создание тестового сценария для входа в систему django

Это метод Логин, который я тестирую ...

class AuthViewModel(): 
     fixture = [user] 
     user_name = 'usera' 
     password = '12345678' 

     def login_page(self, userName, password, request): 
      """ 
      Login by ID & PWD 
      """ 

      # Get user by name & password 
      self.user = authenticate(username=userName, password=password) 

      if self.user is not None: 
       if self.user.is_active: 
        # Login by Django 
        login(request, self.user) 
       else: 
        # User not active 
        self.message = "User is not actived yet" 
      else: 
       # User not exist 
       self.message = "User name or password is incorrect" 

И это тестовый скрипт, который я сделал.

def test_login_page(self): 
    """Test log in 
    """ 

    actauth = AuthViewModel() 
    actauth.actinbox_login(self.user_name, self.password, request) 
    self.assertEqual(actauth.message, 'User name or password is incorrect') 

Это моя проблема, я получил сообщение об ошибке

NameError: name 'request' is not defined 

как определить 'запрос'?

ответ

1

Вам необходимо создать объект запроса с помощью RequestFactory.

RequestFactory использует тот же API, что и тестовый клиент. Однако вместо того, чтобы вести себя как браузер, RequestFactory предоставляет способ для генерации экземпляра запроса, который может использоваться в качестве первого аргумента для любого вида. Это означает, что вы можете протестировать функцию просмотра так же, как , вы бы проверили любую другую функцию - как черный ящик с точно известными входами , тестируя конкретные выходы.

Так в основном

factory = RequestFactory() 
request = factory.get('/your/login/page/') 
actauth = AuthViewModel() 
actauth.actinbox_login(self.user_name, self.password, request) 
self.assertEqual(actauth.message, 'User name or password is incorrect') 
+0

Вау, спасибо ... Это действительно работает отлично !!! –

+0

Рад, что это было полезно. Могу ли я смиренно предположить, что ответ будет отмечен как правильный. Может быть полезно для тех, кто приземляется здесь в будущем, и мы оба получаем бесполезные интернет-точки :-) – e4c5

+0

Да, я это сделаю. :) Я действительно хочу быть лучшим программистом, как вы, и я также мог бы помочь другим. –