2016-08-01 5 views
0

Est-il possible de raccourcir de tels cas de test en utilisant un décorateur ou autre?Décorez deux fonctions?

def test_login_invalid_pwd(self): 
     password = '12345' 
     response = self._login(pwd=password) 
     self.assertEqual(status_code, 200) 
     self.assertEqual(response['resultText'], 
         'invalid password or login') 
     self.assertEqual(response['resultCode'], 55) 

    def test_web_login_invalid_login(self): 
     login = '[email protected]' 
     response = self._login(login=login) 
     self.assertEqual(status_code, 200) 
     self.assertEqual(response['resultText'], 
         'invalid password or login') 
     self.assertEqual(response['resultCode'], 55) 
+3

vous pouvez toujours commencer par grouper l'affirme en une seule fonction – njzk2

Répondre

3

Oui. Essayez ceci:

def helper(self, response): 
    self.assertEqual(status_code, 200) 
    self.assertEqual(response['resultText'], 
        'invalid password or login') 
    self.assertEqual(response['resultCode'], 55) 

def test_login_invalid_pwd(self): 
    password = '12345' 
    response = self._login(pwd=password) 
    self.helper(response) 

def test_web_login_invalid_login(self): 
    login = '[email protected]' 
    response = self._login(login=login) 
    self.helper(response) 

Ou, selon la façon granulaire vos tests doivent être, et en supposant que votre méthode ._login() utilise None comme paramètres par défaut:

def test_login_invalid(self): 
    for login, pwd in (('[email protected]', None), (None, '12345')): 
     response = self._login(login=login, pwd=pwd) 
     self.assertEqual(status_code, 200) 
     self.assertEqual(response['resultText'], 
         'invalid password or login') 
     self.assertEqual(response['resultCode'], 55)