[問題]以subprocess呼叫nosetests執行測試的問題

作者: jonney211 (羽球魂!)   2016-07-14 18:22:53
因工作需要以nosetests跑測試, 但現在遇到一個問題
就是當我以subprocess的方式呼叫nosetests來跑testcase時
testcase中print出來的東西無法"被看見"
下面run.py和test.py是簡化後的範例:
首先執行run.py, 這時會要求輸入一個值並存放在檔案runtemp裡
接著以subprocess.call呼叫nosetests去跑test.py這個testcase
最後test.py會去取得runtemp裡面的值並print出來
這樣的作法在執行上是可行, 但問題出在test.py裡的print無法被看到
我試過即便以subprocess.check_output的方式去取得回傳值也沒用
推測的原因可能是nosetests執行test.py時
因為又起了另一個process在執行而不是在subprocess裡所以才看不到
不曉得有沒有什麼辦法可以讓test.py的print"被看見"
懇請大家幫忙了, 謝謝~
run.py
作者: kenduest (小州)   2016-07-14 19:07:00
python2 嗎 ? file.write(str(s)) <---請轉 string
作者: jonney211 (羽球魂!)   2016-07-14 21:52:00
是python3; 試了str()仍然不行
作者: kenduest (小州)   2016-07-14 23:16:00
有什麼錯誤呢還是訊息嗎nosetests 這是什麼不清楚,先改 python 就好...call('python test.py', shell=True)若你要跑所謂 unit test 這是這類要用 nosetests就不應該預期會可以直接看到所謂程式的訊息輸出因為跑這類測試 stdout 是給 nosetests 輸出顯示用的真的要看到原本程式的 stdout 輸出也可以,就加上--nocapture 參數就好,只是你要想清楚你這樣用目的另外你程式碼看不到所謂的 unit test 程式碼片段所以用這樣的命令跑程式碼的目的也完全看不出重點
作者: jonney211 (羽球魂!)   2016-07-15 00:27:00
感謝k大, 剛試了一下問題真的出在nosetests這runner上上面範例沒有unittest程式碼純粹是我懶得列而已因為unittest裡的測試項跑起來都沒問題只是我先前一直找不到看不見程式訊息輸出的原因感謝解惑QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com