gpt4 book ai didi

python - 无法在范围为类的 fixture 中运行 addfinalizer 函数

转载 作者:行者123 更新时间:2023-11-28 22:42:17 25 4
gpt4 key购买 nike

这是我的测试代码:

import string
import pytest
import tempfile
import os

@pytest.fixture(scope='class')
def TempFile(request):
(tmp_cfg_fd, tmp_cfg_file_path) = tempfile.mkstemp()
os.close(tmp_cfg_fd)
def RemoveTempFile():
print("Removing %r" %(tmp_cfg_file_path))
os.remove(tmp_cfg_file_path)
request.addfinalizer(RemoveTempFile)
return tmp_cfg_file_path

@pytest.mark.usefixtures(TempFile)
class Test:
def test1(self):
print("I'm in test1")

def test2(self):
print("I'm in test2")

当我运行 py.test在上面,我收到此错误:

test_4.py:17: in <module>
@pytest.mark.usefixtures(TempFile)
test_4.py:14: in TempFile
request.addfinalizer(RemoveTempFile)
E AttributeError: class Test has no attribute 'addfinalizer'

当 fixture 有 scope='class' , 然后是 Test类无法运行 addfinalizer .

但是如果 fixture 有 scope='function' ,我称之为 TempFile fixture 单独在 test1test2函数,然后 addfinalizer正常运行。

我怎样才能得到 addfinalizerscope='class' 一起运行?

最佳答案

usefixtures 标记采用字符串,如果将标记更改为:

@pytest.mark.usefixtures('TempFile')

它将正常工作。

关于python - 无法在范围为类的 fixture 中运行 addfinalizer 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31921588/

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