我有测试代码,下载一组图片,对它们进行一些处理,并断言处理工作符合预期。
@pytest.fixture
def image_dir(tmp_path):
test_imgs = [
# ... list of img URLs
for idx, im_url in enumerate(test_imgs):
urllib.request.urlretrieve(im_url, tmp_path / f"{idx}.png")
yield tmp_path
def test_op_A(image_dir: Path):
for im_path in image_dir.iterdir():
# load the image
# modify the image
# save the image back to disk
# assert that the modification worked as expected
def test_op_B(image_dir: Path):
for im_path in image_dir.iterdir():
# load the image
# modify the image
# save the image back to disk
# assert that the modification worked as expected
# ... more tests with a similar format
这可以工作,但速度慢得令人难以置信。我怀疑这是因为每次测试都要重新下载图像。
有没有一种干净的方法来创建一次临时目录,缓存它,并在每次测试中使用该目录的副本?这样,每个测试可以根据需要修改图像,而不影响其他测试,同时保持性能。