如何将相同的参数传递给 Pytest 中的多个函数
how to pass the same argument to more than one function in Pytest
我是 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
我是 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