2016-08-01 72 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)