gpt4 book ai didi

python - py.test SetUp/TearDown 用于整个测试套件

转载 作者:太空狗 更新时间:2023-10-29 16:55:06 35 4
gpt4 key购买 nike

我有一个 Python 包需要访问 X11。我想使用 Xvfb,这样我就不必在构建机器上安装真正的 X11——在本例中是 Hudson。所以,我想在 py.test 启动时启动一个 Xvfb 服务器,使用该服务器进行所有测试,然后关闭它。

我该怎么做?


注意:我可以在每个测试类的 SetUp(TearDown) 中启动(停止)一个 Xvfb 服务器,但这有两个问题:首先,它很浪费。其次,如果我正确终止服务器,或者我挂起的 Xvfb 进程不会死,则它不会工作,因为奇怪的 X 服务器上的致命 IO 错误 0(成功)。这是使用 xvfbwrapper如果有人感兴趣。

最佳答案

你可以使用 pytest-xvfb而不是搞乱这个......它会更容易。


其实很简单。在您的项目根目录中创建一个名为 conftest.py 的文件,其中包含以下内容:

import pytest
import os
import subprocess
import tempfile

@pytest.fixture(scope="session", autouse=True)
def start_xvfb_server (request):
tempdir = tempfile.mkdtemp()
xvfb_cmd = ['Xvfb',
':1022',
'-screen', '0', '800x600x24',
'-fbdir', tempdir,
'-noreset'
]
xvfb_proc = subprocess.Popen(xvfb_cmd,
stdout=open(os.devnull),
stderr=open(os.devnull),
shell=False
)
request.addfinalizer(xvfb_proc.kill)

现在,您所要做的就是设置每个测试,将 DISPLAY 设置为 1022,这很容易做到。

关于python - py.test SetUp/TearDown 用于整个测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399908/

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