我要实现以下情况:
subprocess
在单独的Python线程#2中运行服务器。一些相关代码:
self._proc = subprocess.Popen([self._bin] + self._args, shell=False, bufsize=1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while self._proc.poll() is None:
line = self._proc.stderr.readline()
if 'Ready for connections' in line:
break
self._lock.release()
但是问题是-在pytest中它不起作用。
如果我使用-s
参数运行测试,那么它将起作用。否则,它将永久挂在另一个线程的锁上。
我也尝试使用治具with capsys.disabled()
和with capfd.disabled()
,但没有成功。
是否有一种简单的方法仅禁用捕获子过程输出?还是应该立即使用,也许我在代码中还有其他缺陷?
答案 0 :(得分:0)
此处可以使用插件pytest-xprocess。它提供了一个简单的夹具xprocess
,可用于在单独的过程中启动服务器实例并使其在测试中可用。它还将创建流程logfile
,可用于在测试过程中监视流程输出。