• monomon
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      5 days ago

      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
        link
        fedilink
        arrow-up
        1
        ·
        3 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