Imprimir mensajes de éxito para las afirmaciones en Python

Estoy usando afirmar en python. Cada vez que un mensaje falla, aparece el mensaje de error que habría puesto para imprimir. pero me preguntaba si hay alguna manera de imprimir un mensaje de éxito personalizado cuando pasa la condición de afirmación. Estoy usando el framework py.test.

ejemplo:

assert self.clnt.stop_io()==1, "IO stop failed" 

para el mensaje de confirmación anterior, recibo el mensaje “Error de detención de IO” si falla el proceso de statement, pero busco que “se haya detenido correctamente IO” si se aprueba el paso. algo como

  assert self.clnt.stop_io()==1, "IO stop failed", "IO stop succeeded" 

Sí, lo más sencillo es colocar una impresión debajo de la afirmación:

 assert self.clnt.stop_io()==1, "IO stop failed" print("IO stop passed at location ==1") 

Si realmente te sientes aventurero, puedes escribir tu propio envoltorio de aserción extensible, con el que puedes contar el número de aserciones que fallaron o agregar funcionalidades como realizar pruebas en modo silencioso o detallado, por ejemplo:

 def assert(condition, fail_str, suc_str): if condition: print fail_str else: num_tests_passed = num_tests_passed + 1 if verbose_enabled: print suc_str 

Escribe una función de ayuda simple:

 def myfunc(msg='assert OK'): print msg return True 

Incluya eso en la condición en el lado derecho, después de and :

 assert self.clnt.stop_io()==1 and myfunc("IO stop succeeded"), "IO stop failed" 

Combinaría la solución @dashingdw y @Reblochon Masque

 def my_assert(condition, fail_str, suc_str): assert condition, fail_str print suc_str 

Desde mi punto de vista, esto es menos “peligroso” y no es necesario insertar una línea de print adicional cada vez.