gpt4 book ai didi

python - 如何使用pytest基于服务器输出测试客户端-服务器交互?

转载 作者:行者123 更新时间:2023-12-03 13:07:46 24 4
gpt4 key购买 nike

我要实现以下方案:

  • [线程1]在单独的Python线程2中通过subprocess运行服务器。
  • [线程2]锁定直到服务器输出中出现特定行。
  • [线程1]尝试获取锁,然后等待直到线程#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(),但没有成功。

    有一种简单的方法仅禁用捕获子过程输出吗?还是应该立即使用,也许我在代码中还有其他缺陷?

    最佳答案

    插件pytest-xprocess可以在这里使用。它提供了一个简单的夹具xprocess,可用于在单独的过程中启动服务器实例并使其在测试中可用。它还将创建流程logfile,可用于在测试期间监视流程输出。

    关于python - 如何使用pytest基于服务器输出测试客户端-服务器交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346896/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com