作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我是一名优秀的程序员,十分优秀!