Pytest如何为多个测试函数传递不同参数(如PDF/JPG文件后缀)
解决方案
这里给你两种可直接落地的实现方式,按需选择即可:
方式1:参数化fixture(推荐,代码最简洁)
直接给fixture添加params参数,pytest会自动遍历所有参数值,为每个值运行一遍依赖该fixture的测试用例,不需要拆分两个测试函数:
@pytest.fixture(params=['jpg', 'pdf'], ids=['jpg格式测试', 'pdf格式测试']) def ext(request): # request.param会依次取params里的每个值 return request.param # 仅需保留1个测试函数,运行时会自动生成2条测试结果 def test_remove_files(ext): remove_files(ext) time.sleep(3) assert len(image_in_folder_OS(ext)) == 0
运行测试后会分别输出两个格式的测试结果,无需手动调整任何参数。
方式2:保留独立测试函数(适合后续两个格式测试逻辑有差异的场景)
不需要修改原fixture,直接用@pytest.mark.parametrize给每个测试函数绑定对应的格式参数即可:
import pytest import time @pytest.mark.parametrize('ext', ['pdf']) def test_remove_files_pdf(ext): remove_files(ext) time.sleep(3) assert len(image_in_folder_OS(ext)) == 0 @pytest.mark.parametrize('ext', ['jpg']) def test_remove_files_jpg(ext): remove_files(ext) time.sleep(3) assert len(image_in_folder_OS(ext)) == 0
注意点
你原代码里fixture的变量拼写有误:定义的是extention,返回的是extension,运行时会抛变量不存在的错误,注意修正拼写。
内容的提问来源于stack exchange,提问作者B A C H A S H
相关产品推荐
相关产品推荐

