What if your tests could find themselves and tell you exactly what they check?
Why Test file and function naming conventions in PyTest? - Purpose & Use Cases
Imagine you have dozens of test files and functions named randomly like check1.py, testStuff.py, or functions named doTest(), func1(). When you want to run tests or find a failing test, it feels like searching for a needle in a haystack.
Manually keeping track of test names is slow and confusing. You might miss running some tests or run wrong ones. It's easy to forget which tests cover what, leading to wasted time and errors.
Using clear, consistent naming rules for test files and functions helps tools like pytest find and run tests automatically. It also makes it easy for anyone to understand what each test does just by reading its name.
def doTest(): assert add(2, 3) == 5 # file: check1.py
def test_addition(): assert add(2, 3) == 5 # file: test_addition.py
It enables fast, reliable test discovery and clear communication about what each test checks.
When a developer fixes a bug, they can quickly write a test named test_bug123_fix() in a file test_bug123.py. Later, anyone can find and run this test easily to confirm the bug is fixed.
Manual naming causes confusion and missed tests.
Consistent naming lets pytest find tests automatically.
Clear names improve team communication and speed up testing.
Practice
Solution
Step 1: Understand pytest file naming rules
Pytest requires test files to start withtest_or end with_test.py.Step 2: Check each option against the rule
test_example.py starts withtest_, so it is correct. Options A, C, and D do not follow the naming convention.Final Answer:
test_example.py -> Option AQuick Check:
File starts with 'test_' = B [OK]
- Naming file without 'test_' prefix or '_test.py' suffix
- Using generic file names without test indication
- Confusing test function naming with file naming
Solution
Step 1: Recall pytest function naming rule
Pytest requires test functions to start withtest_to be discovered automatically.Step 2: Evaluate each function name
Only test_login() starts withtest_. Others do not follow the rule.Final Answer:
test_login() -> Option CQuick Check:
Function starts with 'test_' = A [OK]
- Omitting 'test_' prefix in function names
- Using camel case instead of snake case
- Confusing test file and function naming rules
test_math.py with this code:def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
What will pytest do when run on this file?Solution
Step 1: Check file and function naming
The file is namedtest_math.pyand the function is namedtest_add, both following pytest conventions.Step 2: Analyze test function behavior
The test assertsadd(2, 3) == 5, which is true, so the test will pass.Final Answer:
Run the test function and pass -> Option BQuick Check:
Correct naming + passing assertion = A [OK]
- Misnaming test functions so pytest skips them
- Assuming test fails without checking assertion
- Confusing syntax errors with test failures
math_test.py with a function named add_test(). When running pytest, no tests are found. What is the most likely cause?Solution
Step 1: Check file naming
The filemath_test.pyends with_test.py, which is valid for pytest discovery.Step 2: Check function naming
The function is namedadd_test(), which does not start withtest_. Pytest ignores such functions.Final Answer:
The function name does not start with 'test_' -> Option AQuick Check:
Function must start with 'test_' = C [OK]
- Assuming file name alone is enough
- Naming functions with '_test' suffix instead of prefix
- Forgetting to add assert statements
- File:
example_test.py - Functions:
test_case1(),case2_test(),test_case3()
Solution
Step 1: Confirm file naming
The fileexample_test.pyends with_test.py, so pytest will discover it.Step 2: Check function naming rules
Pytest runs functions starting withtest_. Sotest_case1()andtest_case3()will run.case2_test()will be ignored.Final Answer:
Only test_case1() and test_case3() -> Option DQuick Check:
Functions start with 'test_' run = D [OK]
- Thinking '_test' suffix in function name triggers test
- Assuming all functions in test files run automatically
- Confusing file and function naming rules
Ready to prove it?
Pass the test and this pattern moves unknown
