2012-02-06 31 views
11

我試圖將我的測試輸出記錄到文件以及同時運行它們。 對於這個我試圖使用多進程插件和xunit插件。Python鼻子:使用多進程插件將測試結果記錄到文件

我知道他們不一起工作,xunit沒有記錄任何東西,因爲mutiprocess不直接發送輸出。

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

什麼進出口尋找任何替代,讓我寫下輸出到文件。 原因是我正在運行硒測試,每次我得到一個錯誤,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 

做。

參考文獻:

Redirect stderr and stdout in a Bash script

$man xmllint 

$nosetests -h 
+0

非常感謝,它完美的作品! – dgrandes 2012-04-18 15:44:58

相關問題