gpt4 book ai didi

python - 如何将相同的参数传递给 Pytest 中的多个函数

转载 作者:行者123 更新时间:2023-12-04 16:45:40 25 4
gpt4 key购买 nike

我是 Pytest 的新手,想测试一个函数,该函数以两种格式之一从目录中删除文件:PDF 或 JPG。幸运的是,我能够在传递指定格式时测试该函数,并且效果很好,但我不确定如何使用这两种格式对其进行测试。
下面的代码展示了如何测试删除jpg文件的功能;如果我想在 pdf 文件上测试它,我需要更改 exe 函数中的扩展变量。
有没有人可以帮助我改变这个?

@pytest.fixture()
def ext():
extention = 'jpg' # can be changed to pdf or jpg
return extension

def test_remove_files(ext):
remove_files(ext)
time.sleep(3)
assert len(image_in_folder_OS(ext)) == 0

所以我现在需要两个函数,如下所示,但是如何修改 ext 函数以便它可以满足这两个函数的格式?
def test_remove_files_pdf(ext):
remove_files(ext)
time.sleep(3)
assert len(image_in_folder_OS(ext)) == 0

def test_remove_files_jpg(ext):
remove_files(ext)
time.sleep(3)
assert len(image_in_folder_OS(ext)) == 0

最佳答案

您可以使用参数化测试,这将创建两个测试,每个测试都有一个扩展名作为参数

@pytest.mark.parametrize('ext', ['jpg', 'pdf'])
def test_remove_files(ext):
remove_files(ext)
time.sleep(3)
assert len(image_in_folder_OS(ext)) == 0
如果您需要在将扩展发送到测试之前做一些事情,您可以构建一个函数并将其用作参数
def data_source():
for ext in ['jpg', 'pdf']:
# do something with ext
yield ext


@pytest.mark.parametrize('ext', data_source())
def test_remove_files(ext):
remove_files(ext)
time.sleep(3)
assert len(image_in_folder_OS(ext)) == 0

关于python - 如何将相同的参数传递给 Pytest 中的多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68666914/

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