python - pytest tmpdir_factory 测试 glob 搜索

标签 python testing pytest

我正在尝试编写一个测试来验证当我在一个目录上 glob 时是否找到了正确的文件,但我不明白为什么使用 tmpdir_factory glob 返回为空,因为在真实目录上执行代码就像预期的。所有模块导入都是正确的,它正在调用该函数。

待测代码:

def get_files(sdir, extension):
    return glob.glob1(sdir, "*" + extension + "*")

测试代码:

flist = [
    "12707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017011",
    "22707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017012",
    "32707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017013",
    "42707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017014",
    "52707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017015",
    "12707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017011.pdpr",
    "22707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017012.pdpr",
    "32707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017013.pdpr",
    "42707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017014.pdpr",
    "52707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017015.pdpr"
]


def test_get_files_afp(tmpdir_factory):
    rlist = [
        "12707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017011",
        "22707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017012",
        "32707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017013",
        "42707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017014",
        "52707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017015"
    ]
    test_dir = tmpdir_factory.mktemp('testdata')
    for f in flist:
        test_dir.join(f)

    lst = get_files(sdir=str(test_dir), extension=".afp")
    assert lst == rlist

失败:

assert lst == rlist
E       AssertionError: assert [] == ['12707054321.HOM0LRP2.COUNT....JOB46147.pg96.afp.2017015']
E         Right contains more items, first extra item: 
'12707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017011'
E         Full diff:
E         - []
E         + ['12707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017011',
E         +  '22707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017012',
E         +  '32707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017013',
E         +  '42707054321.HOM0LRP2.COUNTS.JOB46147.pg96.afp.2017014',...

最佳答案

在 tmpdir/tmpdir_factory 中,文件在您写入之前不会真正创建。

变化:

for f in flist:
    test_dir.join(f)

for f in flist:
    a = test_dir.join(f)
    a.write('')

创建文件并按预期工作

关于python - pytest tmpdir_factory 测试 glob 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50944928/

相关文章:

django - 将固定装置与 pytest : How to share fixtures and use their parameters in different functions 一起使用

python - 将 3 列(x、y、结果)Python Pandas DataFrame 转换为结果值的 DataFrame,其中 x(唯一)作为行,y(唯一)作为列

python - selenium 通过 css 选择器获取元素

c++ - 添加额外的 const 资格可以破坏功能(假设编译正常)?

javascript - 如何为 HTML 元素编写 Mocha 测试用例?

java - JUnit @RepeatedTest 用于并发执行

python - 使用 python 中的 PyQt5 按下按钮时更改 QML 中的标签

python - 如何根据屏幕高度定义kivy下拉列表最大高度?

python - 为什么相对路径在 python 测试中不起作用?

在 Pytest 上找不到 Python 包