• monomon@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      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