2012-02-06 6 views
11

Estoy tratando de registrar mi salida de pruebas en un archivo y ejecutarlas al mismo tiempo. Para esto estoy tratando de usar el complemento de multiproceso y el complemento xunit.Nariz de Python: Log resultados de las pruebas en un archivo con complemento de multiproceso

Soy consciente de que no funcionan juntos, xunit no registra nada porque mutiprocess no envía la salida directamente.

https://github.com/nose-devs/nose/issues/2

Lo que estoy buscando es una alternativa que me permite escribir abajo de la salida a un archivo. La razón es que estoy ejecutando Selenium Tests, y cada vez que aparece un error, stacktrace es tan grande que stdout está básicamente completo. Algo que alivia también podría ayudar, la documentación de selenio es bastante escasa sobre cómo configurar la salida de registro.

También probé una redirección de la salida estándar bastante básico:

#nosetests > file.txt 

Pero eso no funciona bien.

Respuesta

14

Si desea utilizar la redirección básica de la cáscara se puede hacer

nosetests &> output.txt 

Pero en base a su pregunta parece que prefiere hacer algo como:

$nosetests --processes 4 --with-xunit --xunit-file=test_output.xml 

Ejemplo completo :

$ls 
test_nose.py test_nose.pyc 

$cat test_nose.py 

import sys 
import os 
import time 

def setUp(): 
    pass 

def test_1(): 
    time.sleep(5) 
    with open('test_pid_' + str(os.getpid()), 'w') as f: 
     f.write(str(os.getpid()) + '\n') 

def test_2(): 
    time.sleep(5) 
    with open('test_pid_' + str(os.getpid()), 'w') as f: 
     f.write(str(os.getpid()) + '\n') 

def test_3(): 
    time.sleep(5) 
    with open('test_pid_' + str(os.getpid()), 'w') as f: 
     f.write(str(os.getpid()) + '\n') 

def test_4(): 
    time.sleep(5) 
    with open('test_pid_' + str(os.getpid()), 'w') as f: 
     f.write(str(os.getpid()) + '\n') 

def tearDown(): 
    pass 

$ nosetests --processes 4 --with-xunit --xunit-file=test_output.xml 
.... 
---------------------------------------------------------------------- 
Ran 4 tests in 5.223s 

OK 

$ ls 
test_nose.py test_output.xml test_pid_55247 test_pid_55249 
test_nose.pyc test_pid_55246 test_pid_55248 

$ cat test_pid* 
55246 
55247 
55248 
55249 

$ xmllint -format test_output.xml 
<?xml version="1.0" encoding="UTF-8"?> 
<testsuite name="nosetests" tests="0" errors="0" failures="0" skip="0"/> 

Parece que no funciona como usted ha dicho :)

Pero

$nosetests --processes 4 &> output.txt 

Y

$nosetests --with-xunit --xunit-file=test_output.xml 

Do.

Referencias:

Redirect stderr and stdout in a Bash script

$man xmllint 

$nosetests -h 
+0

muchas gracias, funciona perfectamente! – dgrandes

Cuestiones relacionadas