作者jonney211 (羽球魂!)
看板Python
标题[问题]以subprocess呼叫nosetests执行测试的问题
时间Thu Jul 14 18:22:53 2016
因工作需要以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
---------------------
s = input("Please input a value : ")
file = open('runtemp', 'w')
file.write(s)
file.close()
subprocess.call('nosetests test.py', shell=True)
---------------------
test.py
---------------------
file = open('runtemp', 'r')
x = file.read()
print(x)
---------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.146.87.216
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1468491780.A.14F.html
1F:→ kenduest: python2 吗 ? file.write(str(s)) <---请转 string 07/14 19:07
2F:→ jonney211: 是python3; 试了str()仍然不行 07/14 21:52
3F:推 kenduest: 有什麽错误呢还是讯息吗 07/14 23:16
4F:→ kenduest: nosetests 这是什麽不清楚,先改 python 就好 07/14 23:17
5F:→ kenduest: ...call('python test.py', shell=True) 07/14 23:19
6F:→ kenduest: 若你要跑所谓 unit test 这是这类要用 nosetests 07/14 23:27
7F:→ kenduest: 就不应该预期会可以直接看到所谓程式的讯息输出 07/14 23:27
8F:→ kenduest: 因为跑这类测试 stdout 是给 nosetests 输出显示用的 07/14 23:28
9F:→ kenduest: 真的要看到原本程式的 stdout 输出也可以,就加上 07/14 23:28
10F:→ kenduest: --nocapture 参数就好,只是你要想清楚你这样用目的 07/14 23:28
11F:→ kenduest: 另外你程式码看不到所谓的 unit test 程式码片段 07/14 23:32
12F:→ kenduest: 所以用这样的命令跑程式码的目的也完全看不出重点 07/14 23:32
13F:→ jonney211: 感谢k大, 刚试了一下问题真的出在nosetests这runner上 07/15 00:27
14F:→ jonney211: 上面范例没有unittest程式码纯粹是我懒得列而已 07/15 00:29
15F:→ jonney211: 因为unittest里的测试项跑起来都没问题 07/15 00:30
16F:→ jonney211: 只是我先前一直找不到看不见程式讯息输出的原因 07/15 00:31
17F:→ jonney211: 感谢解惑QQ 07/15 00:32