2012-02-06 9 views
11

私のテスト出力をファイルに記録すると同時に、それらを同時に実行しようとしています。 このため、マルチプロセスプラグインとxunitプラグインを使用しようとしています。Python Nose:テスト結果をマルチプロセスプラグインのあるファイルに出力します

mutoprocessは出力を直接送信しないため、xunitは何もログを記録しません。

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

何イムを探している私は、ファイルへの出力を書き留めることができます任意の代替です。 その理由は、ImがSelenium Testsを実行していて、エラーが発生するたびにstacktraceが非常に大きく、stdoutが基本的に完全に記入されているからです。 問題が緩和されると、ログ出力を設定する方法についてセレンのドキュメントがかなり不足しています。どちらか

#nosetests > file.txt 

しかし、それdoesntの仕事:

は、私はまた、標準出力の非常に基本的なリダイレクトを試してみました。

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

全例

答えて

14

あなたはシェルから基本的なリダイレクトを使用する場合は、あなたの質問に基づいて

nosetests &> output.txt 

を行うことができますが、あなたが、むしろのような何かをしたいようです:

$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

関連する問題