2015-10-07 14 views
2

je lance le code suivant avec la commande « nosetests --with-html test_rest_api.py »python UnitTest ajouter un message pour tous les cas aussi passé et l'imprimer dans le nez rapport html

class Test_rest_api(unittest.TestCase): 

    def test_create_task_group(self): 
     data = {"name":"group2"} 
     response = ib_api.rest_request('POST', object_type="create_Test") 
     msg = json.loads(response.read()) 
     self.assertTrue(response.status >= 200 and response.status < 300,msg) 

if __name__ == '__main__': 
    unittest.main(verbosity=2) 

Si le cas i est un échec obtenir la chaîne qui est dans la variable « msg », mais si elle l'affaire est passé, je ne reçois pas le message

essayé la solution comme ci-dessous,

self.assertTrue(response.status == 200 , msg) 
print msg 

Cela fonctionne, mais la question ici est de savoir si l'affaire obtient échoué le un message apparaît 2 fois dans le rapport html

S'il vous plaît suggérer une bonne solution pour traiter le cas ci-dessus

+1

Si le test réussit, pourquoi voudriez-vous * voir * le message? Si vous devez vous assurer que le contenu correct est dans la réponse, vous devriez * le tester *, sans le lire par la suite. – jonrsharpe

+0

jonsharpe est correct. Ce que vous devriez penser à faire à la place si vous voulez vous assurer que le message est correct, c'est quelque chose du genre 'self.assertEqual (" ceci est mon message ", msg)'. – idjaw

+0

Dans nosetes html signaler si le message est imprimé pour passer, nous pouvons voir quelle réponse nous avons eu. A partir de maintenant, je ne voulais pas écrire un cas de test pour chaque message avec du temps. Mais juste à des fins de reporting, je dois regarder cela –

Répondre

0

I liquidée personnalisation des fonctions assert de unittest pour obtenir des messages PASS dans mon exploitation forestière.

Comme ceci:

class TestBase(unittest.TestCase): 
    def _assert_logs(self, expr, msg=None):               
     """                       
     Helper function: Auto-logs PASS/FAIL for all overriden asserts         

     Keyword arguments:                    
      expr -- Conditional expression appearing in an assert, ex. "x is None"      
      msg -- General message to log (default = None)            
     """                       
     if expr:                      
      self.log.debug("PASS {0}".format(msg))              
     else:                       
      self.log.error("FAIL {0}".format(msg)) 

    def assertIn(self, member, container, msg=None, expected=None,          
       actual=None):                   
     """                        
     Prepend unittest.TestCase's assertIn function for logging          

     Arguments:                      
      first -- first variable of conditional being evaluated          
      second -- second variable of conditional being evaluated         

     Keyword arguments:                    
      msg -- msg that identifies the test assertion            
      expected -- msg indicating expected result             
      actual -- msg indicating actual result              
     """                        
     msg = self._format_message(msg, expected, actual)            
     self._assert_logs(member in container, msg)              
     super(TestBase, self).assertIn(member, container, msg) 

ont ensuite vos cas de test héritent de TestBase au lieu de unittest.TestCase. J'espère que cela aide!