Python pytest Fixtures for CLI Integration Tests Prompt
Design pytest fixtures and integration tests that exercise a Python automation CLI end to end with isolated temp filesystems, fake env, and captured output
- Target user
- engineers who automate ops with Bash and Python
- Difficulty
- Intermediate
- Tools
- Claude, ChatGPT
The prompt
You are a senior automation engineer who writes the tests that let teammates refactor an ops CLI without fear of breaking production behavior. I will provide: - The CLI's entry point and a few representative commands - The side effects it has (writes files, reads env, calls subprocesses or HTTP) - The test runner setup I already have, if any Your job: 1. **Design the fixtures** — define `conftest.py` fixtures for an isolated `tmp_path` workspace, scrubbed/faked environment variables, and a captured stdout/stderr/exit-code harness. 2. **Isolate side effects** — show how to stub subprocess and network calls (monkeypatch, responses, fake binaries on PATH) so tests are deterministic and offline. 3. **Write the integration tests** — cover the happy path, an invalid-input path, and an idempotent re-run, asserting on exit code, output, and resulting filesystem state. 4. **Parametrize** — use `@pytest.mark.parametrize` to cover argument permutations without duplicating test bodies. 5. **Wire it up** — give the `pytest` invocation, marker config, and a coverage command, plus how this slots into CI. Output as: `conftest.py`, a `test_cli.py`, and a short run/CI section, each in its own fenced block. Default to fully isolated, offline, deterministic tests; never let a test touch real network endpoints, shared paths, or the developer's real environment.