📖 Scenario: You are building a small Flask web application and want to check how much of your code is tested by your tests. This helps you find parts of your code that need more testing.
🎯 Goal: Create a Flask app, set up coverage configuration, run tests with coverage, and generate a coverage report.
📋 What You'll Learn
Create a simple Flask app with one route
Add a configuration variable to enable testing mode
Write a test function to test the route
Run coverage to measure test coverage and generate a report
💡 Why This Matters
🌍 Real World
Coverage reporting helps developers see which parts of their web app are tested and which are not, improving code quality.
💼 Career
Understanding coverage reporting is important for software developers and testers to ensure reliable and maintainable code.
Progress0 / 4 steps
1
Create a simple Flask app
Create a Flask app by writing from flask import Flask and then create an app variable with app = Flask(__name__). Add a route / that returns the string 'Hello, Coverage!'.
Flask
Hint
Use Flask(__name__) to create the app and @app.route('/') to define the home page.
2
Add testing configuration
Add a configuration variable app.config['TESTING'] = True to enable testing mode in the Flask app.
Flask
Hint
Set app.config['TESTING'] = True right after creating the app.
3
Write a test function for the route
Write a test function called test_home that uses the Flask test client to send a GET request to '/' and asserts the response data equals b'Hello, Coverage!'.
Flask
Hint
Use app.test_client() to create a client and send a GET request to '/'.
4
Run coverage and generate report
Add the code to run coverage by importing coverage, starting coverage with cov = coverage.Coverage() and cov.start(), then run the test function test_home(), stop coverage with cov.stop(), save coverage data with cov.save(), and finally generate a report with cov.report().
Flask
Hint
Use the coverage module to measure coverage around the test function call.
Practice
(1/5)
1. What is the main purpose of coverage reporting in a Flask application?
easy
A. To improve the speed of the Flask app
B. To deploy the Flask app to a server
C. To show which parts of the app are tested by your tests
D. To create a user interface for the app
Solution
Step 1: Understand coverage reporting
Coverage reporting tracks which parts of your code are executed during tests.
Step 2: Identify its purpose in Flask
It helps you see which parts of your Flask app have tests and which do not.
Final Answer:
To show which parts of the app are tested by your tests -> Option C
Quick Check:
Coverage reporting = shows tested parts [OK]
Hint: Coverage shows tested code parts, not speed or deployment [OK]
Common Mistakes:
Confusing coverage with app speed optimization
Thinking coverage deploys the app
Assuming coverage creates UI
2. Which command correctly runs tests with coverage in a Flask project?
easy
A. pytest coverage run
B. coverage run -m pytest
C. flask coverage run
D. coverage test run
Solution
Step 1: Recall the coverage run syntax
The correct command to run tests with coverage is 'coverage run -m pytest'.
Step 2: Check other options
Other options mix commands incorrectly or use invalid syntax.
Final Answer:
coverage run -m pytest -> Option B
Quick Check:
Correct coverage test run command = coverage run -m pytest [OK]
Hint: Use 'coverage run -m pytest' to run tests with coverage [OK]
Common Mistakes:
Swapping order of coverage and pytest
Using 'flask' command with coverage incorrectly
Typing 'coverage test run' which is invalid
3. Given you ran coverage run -m pytest successfully, which command shows a text summary of coverage results?
medium
A. coverage report
B. pytest --coverage
C. coverage html
D. flask coverage report
Solution
Step 1: Identify commands for coverage output
'coverage report' shows a text summary in the terminal, while 'coverage html' creates a web page report.
Step 2: Eliminate incorrect options
'pytest --coverage' is not a standard command, and 'flask coverage report' is invalid.
Final Answer:
coverage report -> Option A
Quick Check:
Text summary command = coverage report [OK]
Hint: Use 'coverage report' for text summary, 'coverage html' for web report [OK]
Common Mistakes:
Confusing 'coverage html' with text output
Using invalid commands like 'pytest --coverage'
Trying 'flask coverage report' which doesn't exist
4. You ran coverage run -m pytest but coverage report shows 0% coverage. What is the likely cause?
medium
A. Tests did not execute any Flask app code
B. You forgot to install Flask
C. Coverage report command is misspelled
D. You ran coverage without pytest
Solution
Step 1: Understand 0% coverage meaning
0% coverage means no code was executed during tests, so coverage tool found no lines run.
Step 2: Analyze possible causes
If tests ran but did not call Flask app code, coverage stays zero. Missing Flask or misspelling commands would cause errors, not zero coverage.
Final Answer:
Tests did not execute any Flask app code -> Option A
Quick Check:
0% coverage = no app code run in tests [OK]
Hint: 0% means tests ran but didn't touch app code [OK]
Common Mistakes:
Assuming 0% means Flask is not installed
Thinking coverage report command typo causes 0%
Believing running coverage without pytest causes 0%
5. You want to generate a detailed HTML coverage report for your Flask app after running tests. Which sequence of commands is correct?
hard
A. flask coverage run; coverage html; open html/index.html
B. pytest run coverage; coverage report; open index.html
C. coverage test run; coverage html; open coverage/index.html
D. coverage run -m pytest; coverage html; open htmlcov/index.html
Solution
Step 1: Run tests with coverage
Use 'coverage run -m pytest' to run tests and collect coverage data.
Step 2: Generate HTML report and open it
Run 'coverage html' to create the report in 'htmlcov' folder, then open 'htmlcov/index.html' to view it.
Step 3: Verify other options
Other options use invalid commands or wrong paths for report files.
Final Answer:
coverage run -m pytest; coverage html; open htmlcov/index.html -> Option D
Quick Check:
Run tests, generate HTML, open htmlcov/index.html [OK]
Hint: Run tests, then 'coverage html', then open htmlcov/index.html [OK]
Common Mistakes:
Using wrong command order or invalid commands
Opening wrong file path for HTML report
Confusing 'pytest run coverage' with correct syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.