2016-04-04 3 views
2

Ich habe eine Website, wo alle Ansichten mit @login_required geschützt werden, mit Ausnahme der Login-Ansicht, natürlich.
Die Verwendung des Dekorators führt jedoch dazu, dass die Aufrufe dieser Ansichten fehlschlagen, wenn ich der Anforderung keinen authentifizierten Benutzer hinzufüge. Ich weiß, dass dies in setup() getan werden kann, aber das Schreiben der gleichen Zeile in jeder Testklasse entspricht nicht dem DRY-Prinzip.django testing views mit login_required dekorator bezüglich DRY

Gibt es einen besseren Ansatz als das?

Antwort

3

Wie Sie sagen, können Sie die Anmeldung in die setUp-Methode verschieben, um Doppelungen bei jedem Test in der Testklasse zu vermeiden.

Wenn Sie die Methode setUp in keiner Testklasse duplizieren möchten, können Sie Ihre eigene Testfallklasse oder Mixin erstellen.

class LoggedInTestCase(TestCase): 

    def setUp(self): 
     user = User.objects.create_user(username='username', password='password') 
     self.client.login(username='username', password='password') 

class MyTestCase(LoggedInTestCase): 
    def test_stuff(self): 
     ... 

Wenn Sie die setUp Methode in der Kindklasse außer Kraft setzen, denken Sie daran super() zu nennen.

class MyOtherTestCase(LoggedInTestCase): 
    def setUp(self): 
     super(MyOtherTestCase, self).setUp() 
     # other setUp code goes here 

    def test_other_stuff(self): 
     ... 
+0

wie könnte ich das vielleicht verpassen ... Danke, dass du mir wieder die Augen geöffnet hast. – ProSinq

Verwandte Themen