2016-05-12 17 views
2

Bitte helfen Sie mir. Ich bin derzeit beauftragt, ein Testskript für die Login-Methode zu erstellen.Erstellen Testskript für Login django

Dies ist die Login-Methode, die ich testen bin ...

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" 

Und dies ist der Test-Skript, das ich habe.

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') 

Das ist mein Problem, erhielt ich Fehlermeldung

NameError: name 'request' is not defined 

wie definieren 'request'?

Antwort

1

Sie müssen ein Anforderungsobjekt mit einer RequestFactory erstellen.

Die RequestFactory teilt die gleiche API wie der Testclient. Anstatt sich wie ein Browser zu verhalten, bietet die RequestFactory eine Möglichkeit eine Anforderungsinstanz zu generieren, die als erstes Argument für eine beliebige Ansicht verwendet werden kann. Das bedeutet, dass Sie eine Ansichtsfunktion auf die gleiche Weise wie testen können. Sie würden jede andere Funktion testen - als Black Box mit genau bekannten Eingängen, die auf bestimmte Ausgänge testen.

Also im Grunde

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

Wow, danke ... Das funktioniert wirklich toll !!! –

+0

Ich bin froh, dass ich etwas gebraucht habe. Darf ich demütig auch vorschlagen, dass die Antwort als richtig markiert wird? Könnte nützlich sein für jemanden, der hier in der Zukunft landet und wir beide nutzlose Internet-Punkte bekommen :-) – e4c5

+0

Ja werde ich. :) Ich möchte wirklich ein besserer Programmierer wie du sein und ich könnte auch anderen helfen. –