2016-08-01 105 views
0

是否有可能通过使用装饰器或其他方法使这种测试案例变得更短?装饰两个功能?

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

你总是可以通过分组开始在一个单一的断言功能 – njzk2

回答

3

是的。试试这个:

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) 

,或根据你的测试的精细程度需要可以了,假设你._login()方法使用None为默认设置:

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)