[英]Can not print output of python script that run with subprocess
I try to test server and want print it output on end of the test here 我尝试测试服务器,并希望在测试结束时在此处打印输出
class TestHandler(TestCase):
def setUp(self):
cmd = [
'python', '-m', 'server',
'-f', write_to_path,
'--debug'
]
self.server = Popen(cmd, universal_newlines=True, cwd=root_dir_path,
stdout=PIPE, stderr=PIPE)
# also tried this, did not help
# cmd = [
# 'python -m server --debug -f ' + write_to_path
# ]
# self.server = Popen(cmd, shell=True, universal_newlines=True, cwd=root_dir_path,
# stdout=PIPE, stderr=PIPE)
def tearDown(self):
try:
outs, errs = self.server.communicate(timeout=2)
print(outs, errs)
except TimeoutExpired:
print("kill")
self.server.kill()
outs, errs = self.server.communicate()
print(outs, errs) # empty output here
def testWordWithoutParent(self):
pass
When I run it, stdout and err is empty, but server code was executed (I tested it main function in server/__main__.py with pdb) 当我运行它时,stdout和err为空,但是服务器代码已执行(我使用pdb在server / __ main__.py中测试了它的主要功能)
~/Documents/LINGUALEO/lingualeo2anki $ python -m unittest
.kill
.
----------------------------------------------------------------------
Ran 2 tests in 2.006s
OK
I tried a lot of answers on stackowerflow almost 3 hours and none helped, I gave up. 在将近3个小时的时间里,我在stackowerflow上尝试了很多答案,但没有帮助,我放弃了。
The terminate signal was handled unproperly. 终止信号处理不当。
Was 是
try:
httpd = HTTPServer(config.server_address, Handler)
debug('http server is running...listening on port %s', config.port)
httpd.serve_forever()
except KeyboardInterrupt:
httpd.server_close()
sys.exit(0)
finally:
httpd.socket.close()
httpd.server_close()
debug("finnaly")
become 成为
server = None
def close_server(signum, frame):
debug("Signal handler called with signal %s", signum)
if server:
server.server_close()
sys.exit()
server = HTTPServer(config.server_address, Handler)
signal.signal(signal.SIGINT, close_server)
signal.signal(signal.SIGTERM, close_server)
debug('http server is running...listening on port %s', config.port)
server.serve_forever()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.