pytest tmpdir\u工厂测试全局搜索

2024-04-25 22:17:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图编写一个测试,验证当我在一个目录上glob时是否找到了正确的文件,但我不明白为什么glob会使用tmpdir\u工厂返回空文件,因为在一个实际目录上执行代码的工作与预期的一样。所有模块导入都是正确的,它正在调用函数。你知道吗

待测试代码:

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

pytest代码:

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',...

Tags: testgetdirextensionfilesglobtmpdircounts
1条回答
网友
1楼 · 发布于 2024-04-25 22:17:26

在tmpdir/tmpdir\u工厂中,只有在写入文件之后,才会真正创建该文件。你知道吗

更改:

for f in flist:
    test_dir.join(f)

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

导致创建文件并按预期工作

相关问题 更多 >