Parece que python nosetest se cerrará cuando se encuentre con "sys.exit()", y la burla de este built-in no funcionará. Gracias por las sugerencias.¿Cómo moverse por "sys.exit()" en python nosetest?
11
A
Respuesta
22
Puede intentar capturar la excepción SystemExit. Se levanta cuando alguien llama al sys.exit()
.
with self.assertRaises(SystemExit):
myFunctionThatSometimesCallsSysExit()
7
import sys
sys.exit = lambda *x: None
Tenga en cuenta que los programas pueden esperar razonablemente no continuar después sys.exit()
, por lo que parchear a cabo no en realidad podría ayudar a ...
+0
No necesariamente. Yo uso sys.exit() para demonizar mi servidor. –
5
Si está utilizando mock
parchear sys.exit
, se puede estar parchándolo incorrectamente.
Esta pequeña prueba funciona bien para mí:
import sys
from mock import patch
def myfunction():
sys.exit(1)
def test_myfunction():
with patch('foo.sys.exit') as exit_mock:
myfunction()
assert exit_mock.called
invoca con:
nosetests foo.py
salidas:
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
1
Este es un ejemplo en el marco unittest
.
with self.assertRaises(SystemExit) as cm:
my_function_that_uses_sys_exit()
self.assertEqual(cm.exception.code, expected_return_code)
Cuestiones relacionadas
- 1. Diferencia entre exit() y sys.exit() en Python
- 2. ¿Por qué los nosetest no encuentran nada?
- 3. Listar todas las pruebas encontradas por Nosetest
- 4. ¿Cómo ejecutas nosetest de pycharm?
- 5. código python 2: si python 3 luego sys.exit()
- 6. Python: variables condicionales basadas en si nosetest se está ejecutando
- 7. Cómo utilizar cProfile con nosetest --with-profile?
- 8. ¿Por qué sys.exit() no sale cuando se llama dentro de un hilo en Python?
- 9. ¿Cómo me burlo del método de Python OptionParser.error(), que hace un sys.exit()?
- 10. Python: ¿Por qué `sys.exit (msg)` llamado desde un hilo no imprime `msg` en stderr?
- 11. moverse hacia arriba UIToolbar
- 12. Cómo eludir el límite del rango 0-255 para sys.exit() en python?
- 13. Aprendizaje C++: devolver referencias Y moverse por el sector
- 14. VIM: ¿Cómo moverse entre las etiquetas coincidentes?
- 15. Moverse por límite de caracteres mailto/href/url
- 16. UITableView moverse a la celda
- 17. Desactivar moverse en la vista de mapa
- 18. Diferencia entre llamar a sys.exit() y lanzar excepción
- 19. Cómo moverse por IE8 32k límite de datos: ¿uri en codificación base64?
- 20. Git: Cómo moverse hacia atrás y hacia adelante entre confirmaciones
- 21. ¿Cómo salir en Python 3.2?
- 22. ¿Por qué finalmente el bloque se está ejecutando después de llamar a sys.exit (0) en el bloque except?
- 23. mejor forma de moverse en vim (modo normal)
- 24. Moverse por la misma política de origen en javascript sin scripts del lado del servidor
- 25. exe de pyinstaller no está muriendo después de sys.exit()
- 26. Moverse entre HTTP y HTTPS en ASP.NET MVC
- 27. ¿Las columnas de texto deberían moverse hacia el final?
- 28. ¿Cuál es la diferencia entre sys.exit (0) y os._exit (0)
- 29. llegar Moverse por las colecciones de TFS 2010 a TFS 2012
- 30. Moverse por MySQL Error "No se puede volver a abrir la tabla"
con self.assertRaises (SystemExit): myFunction() –
Brilliant! Eso es realmente útil cuando se trabaja con scripts de otras personas y se organizan utilidades de automatización :) – theMarceloR