Después de mirar en el otro answe Aquí, esta es la mejor respuesta que he encontrado. Es feo, integra todo el conjunto de pruebas en el manejo de excepciones, pero parece hacer lo que quiere. Saltarse las pruebas específicamente cuando las importaciones no funcionan.
Suponiendo que está hablando de usar nosetests -x para ejecutar las pruebas, debe pasar las pruebas que omiten, al menos cuando lo probé.
import unittest
try:
import PyQt4
# the rest of the imports
# actual tests go here.
class TestDataEntryMixin(unittest.TestCase):
def test_somefeature(self):
# ....
except ImportError, e:
if e.message.find('PyQt4') >= 0:
class TestMissingDependency(unittest.TestCase):
@unittest.skip('Missing dependency - ' + e.message)
def test_fail():
pass
else:
raise
if __name__ == '__main__':
unittest.main()
Si la importación falla, reemplaza la ejecución de prueba con una sola prueba que simplemente omite. También intenté asegurarme de que no se traga ninguna excepción involuntariamente. Esta solución debe mucho a todas las demás respuestas y comentarios a la pregunta.
Si lo ejecuta en modo detallado verá esto cuando se salta,
test_fail (test_openihm_gui_interface_mixins.TestMissingDependency) ... skipped 'Missing dependency - No module named PyQt4'
Para su información, hay una publicación en el blog sobre esto en http://colinnewell.wordpress.com/2012/08/31/skippng-python-unit-tests-if-a-dependency-is-missing/ –
@Mu Mind, esto funciona, excepto que le digo a 'nose' que" falle rápido ". Llamar a 'unittest.SkipTest() 'parece contar como una falla y detiene la ejecución. –