2012-02-06 2 views
11

Im пытается записывать результаты моих тестов в файл, а также запускать их одновременно. Для этого я пытаюсь использовать многопроцессорный плагин и плагин xunit.Python Nose: записывает результаты тестов в файл с плагином Multiprocess

Im известно, что они не работают вместе, xunit ничего не записывает, потому что mutiprocess не отправляет результат напрямую.

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

Что Im ищет любая альтернатива, которая позволяет мне записать вывод в файл. Причина в том, что Im работает Selenium Tests, и каждый раз, когда я получаю сообщение об ошибке, stacktrace настолько велика, что stdout в основном полностью заполняется. Что-то, что облегчает, может помочь, а документация селена довольно скудна о том, как настроить вывод журнала.

Я также попытался довольно основной переназначение стандартный вывод:

#nosetests > file.txt 

Но то не работает.

ответ

14

Если вы хотите использовать основное перенаправление из оболочки вы можете сделать

nosetests &> output.txt 

Но, основываясь на ваш вопрос, кажется, вы хотели бы сделать что-то вроде:

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

Полный пример :

$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"/> 

Похоже, что это не работает Вы сказали :)

Но

$nosetests --processes 4 &> output.txt 

И

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

Do.

Ссылки:

Redirect stderr and stdout in a Bash script

$man xmllint 

$nosetests -h 
+0

спасибо, это работает отлично! – dgrandes

Смежные вопросы