[问题]以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