requests method how body and python unit-testing

method - requests post body python



Unittest que causa sys.exit() (6)

No importa lo que haga sys.exit () es llamado por unittest, incluso los ejemplos más triviales. No puedo decir si mi instalación está en mal estado o qué está pasando.

IDLE 1.2.2 ==== No Subprocess ==== >>> import unittest >>> >>> class Test(unittest.TestCase): def testA(self): a = 1 self.assertEqual(a,1) >>> unittest.main() option -n not recognized Usage: idle.pyw [options] [test] [...] Options: -h, --help Show this message -v, --verbose Verbose output -q, --quiet Minimal output Examples: idle.pyw - run default set of tests idle.pyw MyTestSuite - run suite ''MyTestSuite'' idle.pyw MyTestCase.testSomething - run MyTestCase.testSomething idle.pyw MyTestCase - run all ''test*'' test methods in MyTestCase Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> unittest.main() File "E:/Python25/lib/unittest.py", line 767, in __init__ self.parseArgs(argv) File "E:/Python25/lib/unittest.py", line 796, in parseArgs self.usageExit(msg) File "E:/Python25/lib/unittest.py", line 773, in usageExit sys.exit(2) SystemExit: 2 >>>


No intente ejecutar unittest.main() desde IDLE. Está intentando acceder a sys.argv , y está obteniendo los argumentos con los que se inició el IDLE. Ejecute sus pruebas de una manera diferente a IDLE, o llame a unittest.main() en su propio proceso de Python.


Pop abre el código fuente en unittest.py . unittest.main() está codificado para llamar a sys.exit() después de ejecutar todas las pruebas. Use TextTestRunner para ejecutar suites de prueba desde el aviso.


try: sys.exit() except SystemExit: print(''Simple as that, but you should really use a TestRunner instead'')


Tu ejemplo también está saliendo en mi instalación. Puedo hacerlo ejecutar las pruebas y permanecer dentro de Python cambiando

unittest.main()

a

unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))

Más información está disponible aquí en la Referencia de la Biblioteca de Python.


Es agradable poder demostrar que tus pruebas funcionan cuando pruebas por primera vez el módulo unittest y saber que no saldrás de tu shell de Python. Sin embargo, estas soluciones dependen de la versión.

Python 2.6

Estoy usando Python 2.6 en el trabajo, import unittest2 as unittest (que es el módulo unittest supuestamente encontrado en Python 2.7).

El unittest.main(exit=False) no funciona en el testtest2 de Python 2.6, mientras que la solución de JoeSkora lo hace, y para reiterarlo:

unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))

Para dividir esto en sus componentes y argumentos predeterminados, con los nombres semánticos correctos para los diversos objetos compuestos:

import sys # sys.stderr is used in below default args test_loader = unittest.TestLoader() loaded_test_suite = test_loader.loadTestsFromTestCase(Test) # Default args: text_test_runner = unittest.TextTestRunner(stream=sys.stderr, descriptions=True, verbosity=1) text_test_runner.run(loaded_test_suite)

Python 2.7 y 3

En Python 2.7 y superior, lo siguiente debería funcionar.

unittest.main(exit=False)


En la nueva versión de Python 2.7, unittest.main () tiene un nuevo argumento.

Si ''exit'' se establece en False , no se llama a sys.exit() durante la ejecución de unittest.main() .