2016-08-01 4 views
0

デコレータなどを使ってテストケースを短くすることはできますか?2つの機能を装飾しますか?

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) 
関連する問題