QABash Community Forum

Please or Register to create posts and topics.

I Used These Pytest Arguments — My Debugging Time Dropped 70% 📉


🧪 So You’ve Started Writing Tests…

Welcome to the world of Pytest command-line arguments — You’ve just written a handful of tests in Pytest. You run them with pytest... and boom 💥 — a wall of output hits your screen. Some dots, some letters, maybe a failure or two, but you’re left wondering…

“Uhh… What just happened?!” 😅

If that sounds familiar, you’re not alone. Pytest is powerful, but its true magic unlocks when you start using it smartly — with command-line flags like -v, -rA, and -k.

Today, I’ll break down exactly what these flags mean, when to use them, and how to combine them to supercharge your test runs like a pro 🧪💪


🔍 Why Use Pytest CLI Arguments?

Running tests with just pytest is okay for quick checks. But when your test suite grows, you’ll want to:

✅ Filter specific tests
✅ Get detailed reports
✅ Stop tests after a failure
✅ Categorize and run test groups
✅ Clean up noisy output

Let’s level up! 💪


🛠️ Pytest Arguments: Quick Reference Table

Argument Description Example Use Case
-v Verbose output pytest -v See full test names and statuses
-q Quiet mode pytest -q Minimal output (just dots or short letters)
-rA Show full report pytest -rA Include skipped, xpassed, failed, etc.
-rf Report only failed tests pytest -rf Quickly focus on failed cases
-rs Report skipped tests pytest -rs Find which tests were skipped
-k "name" Run tests that match string pytest -k "login" Filter by test name pattern
-k "not api" Exclude matching tests pytest -k "not api" Skip certain tests
-m "tag" Run tests with a marker pytest -m "smoke" Run only smoke tests, for example
--maxfail=2 Stop after 2 failures pytest --maxfail=2 Useful for quick debugging
--tb=short Short traceback pytest --tb=short Less clutter in error logs
--disable-warnings Hide warnings pytest --disable-warnings Clean terminal output
--capture=no Show print statements pytest --capture=no Debug using print() inside tests


🧪 Sample Use Cases (Real Examples)

Let's say your file is called test_login.py and it contains:

import pytest

@pytest.mark.smoke
def test_valid_login():
    assert "Dashboard" in "Dashboard Page"

@pytest.mark.regression
def test_invalid_login():
    assert "Error" in "Login Error Message"

Here’s how you could use CLI options effectively:

Scenario Command Why It Helps
Run all tests with names that include "login" pytest -v -k "login" Target specific functionality
Run only smoke tests pytest -v -m "smoke" Great for fast validation
Run all tests but stop after 1 failure pytest --maxfail=1 -v Save time in large test suites
Run all tests and hide warnings pytest -v --disable-warnings Clean up noisy output
Run tests and print debug output pytest --capture=no See print() statements in terminal
Show only failed and skipped test summary pytest -v -rs -rf Focus on what's broken or skipped


💡 Pro Tips for Pytest CLI

Combine flags like -v -rA -k "add" for maximum insight
Use -m with markers to categorize and run logical groups of tests
Try --maxfail when you want quick feedback without running the full suite
Use --tb=short to make tracebacks more readable
Add to pytest.ini for default behaviors across the team


⚠️ Common Pitfalls to Avoid

🚫 Running all tests every time — it’s slow and wasteful
🚫 Ignoring skipped tests — they might contain hidden bugs
🚫 Not using markers — makes filtering test types harder later
🚫 Hardcoding too many custom flags in CI — keep it DRY with config files


🎓 Expert Takeaway

Command-line options are more than convenience — they’re critical for productivity and test strategy. Whether you’re debugging locally, running tests in CI/CD pipelines, or managing a growing test suite, mastering Pytest CLI arguments is a game-changer 🧪💻

Scroll to Top
×