this post was submitted on 31 Dec 2024
15 points (100.0% liked)

Python

6496 readers
1 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

๐Ÿ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

๐Ÿ Python project:
๐Ÿ’“ Python Community:
โœจ Python Ecosystem:
๐ŸŒŒ Fediverse
Communities
Projects
Feeds

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[โ€“] monomon 1 points 6 days ago* (last edited 6 days ago) (1 children)

This. We kinda stumbled on this pattern, and use it to great effect. Simplified code:

@pytest.fixture
def tmpfiles():
    with NamedTemporaryFile(suffix=".html") as f:
        yield f

# or for paths, which are more suitable for certain tests
# touch them so they exist
@pytest.fixture
def othertmppaths() -> list[Path]:
    f1 = Path("...")
    f1.touch()
    f2 = Path("...")
    f2.touch()

    yield [f1, f2]
    # you could delete them here if needed
    f1.unlink()

def test_foo(othertmppaths list[Path]):
    result = upload_resource(othertmppaths[0]) 
    assert result.status == 200

The context manager one will properly clean up all files.

E: Pretty website btw

[โ€“] logging_strict 1 points 4 days ago

Often using pytest to debug code. When using a tmp_path, would prefer not to delete the file tree in the end.

When the test fails, can run the code against the folder tree

  • cd into the tmp folder
  • activate the venv
  • run the code