Yeah, I realize the structure isn't correct right now. I will probably be refactoring things a bit. (Still, it's just a small script. I'm mostly trying to learn how pytest's fixtures work.)
S On Sun, Jun 22, 2025 at 6:58 PM Bassam Khouri <bassam.kho...@gmail.com> wrote: > This calls for software design/architecture for test ability. Ideally, the > test would accept the contents of the ICS file, allows you to verify > various things, including fault injection. There should be other tests that > would run against the a web server to validate and verify the end to end > workflow. > > Cheers, > > On Sun, Jun 22, 2025 at 5:18 PM Skip Montanaro via code-quality < > code-quality@python.org> wrote: > >> Thanks. The Web server aspect of things is pretty minimal. I get ics >> Files from a server then process them in different ways. I do need to make >> sure I can fetch the file, but beyond that, all the processing is >> postprocessing. The config file for the app specifies ics URLs. I could >> mess around and make it accept files, but it's not as clean as >> `request.get(...)`. I'll figure things out. >> >> On Sun, Jun 22, 2025, 15:52 David Zaslavsky <diaz...@ellipsix.net> wrote: >> >>> No, you didn't miss anything. The typical use case for plugins like this >>> is that the responses would be very short and defined in the test code >>> itself; for example, here's a test of pytest-httpserver itself where the >>> response is just "OK": >>> https://github.com/csernazs/pytest-httpserver/blob/master/tests/test_matcher.py. >>> It wouldn't be worth putting that in a file. >>> >>> If you wanted to store the response for some particular test query in a >>> file, you could load the file content yourself and give that as the >>> response to the server, like this: >>> >>> expected_response = pathlib.Path("response.txt").read_text() >>> httpserver.expect(matcher).respond_with_data(expected_response) >>> >>> Or if you really wanted a server that will serve arbitrary files based >>> on the requested path, you could implement that with a custom handler ( >>> https://pytest-httpserver.readthedocs.io/en/latest/howto.html#using-custom-request-handler). >>> But that would be a pretty odd thing to do in tests, because ideally in >>> your tests you (should) know in advance exactly which requests need to be >>> handled and what their responses should be. There shouldn't be any need to >>> have the server figure out on the fly what it needs to serve, as with a >>> real live web server. (And in fact, it's generally valuable to check that >>> the code being tested doesn't make any HTTP requests other than the ones >>> it's specifically supposed to, which you couldn't do as well if you made >>> your server handle arbitrary requests by serving from the filesystem.) >>> >>> David >>> >> >>> On Sunday, June 22nd, 2025 at 12:46 PM, Skip Montanaro < >>> skip.montan...@gmail.com> wrote: >>> >>> Thanks. Plugins (of all stripes, not just pytest) have always seemed a >>> bit magical to me. I see nothing in the docs which offer a way to serve >>> test files from a directory, similar to the `-d` flag you can offer to >>> `python -m http.server`. Did I miss something? >>> >>> Skip >>> >>> On Fri, Jun 20, 2025 at 3:51 PM David Zaslavsky <diaz...@ellipsix.net> >>> wrote: >>> >>>> There are some pytest plugins that will handle this for you. In >>>> particular pytest-httpserver is implemented the way you want, where it'll >>>> start the server once at the beginning of your test session and keep it >>>> running. I'd suggest checking that out. >>>> >>>> Though in general, I think it's better not to worry too much about >>>> whether resources are allocated freshly for each test or not, unless you >>>> find that your test suite is unacceptably slow because of that resource >>>> allocation. It's all too easy to have different tests interfere with each >>>> other if you reuse resources, unless you're very careful. >>>> >>>> David >>>> >>>> >>>> -------- Original Message -------- >>>> On 6/20/25 6:31 AM, Skip Montanaro via code-quality wrote: >>>> >>>> I'm struggling trying to understand how Pytest's fixtures can be used >>>> to facilitate setup and teardown of long-running resource servers. For >>>> example, I want to fire up a little web server (because the tool I'm >>>> testing queries a web server IRL) to serve up some simple content. I don't >>>> want to start it for each test case, just once and the start, then stop it >>>> at the end. All the notes/documentation I've found seem to emphasize >>>> fixture's ease-of-use by "requesting" them on a per-test-case basis. >>>> >>>> Can someone point me to a tutorial which explains how to properly set >>>> up and tear down a service at the beginning and end of a test run? >>>> >>>> Thx, >>>> >>>> Skip >>>> >>>> >>> _______________________________________________ >> code-quality mailing list -- code-quality@python.org >> To unsubscribe send an email to code-quality-le...@python.org >> https://mail.python.org/mailman3//lists/code-quality.python.org >> Member address: bassam.kho...@gmail.com >> >
_______________________________________________ code-quality mailing list -- code-quality@python.org To unsubscribe send an email to code-quality-le...@python.org https://mail.python.org/mailman3//lists/code-quality.python.org Member address: arch...@mail-archive.com