Generate HTML report using pytest-html plugin
Preconditions (2)
✅ Expected Result: The HTML report file is created with test results summary and details visible in the browser
import subprocess import os import re def test_generate_html_report(): # Run pytest with html report option result = subprocess.run(['pytest', '--html=report.html', '--self-contained-html'], capture_output=True, text=True) # Assert pytest ran successfully assert result.returncode == 0, f"Pytest failed with output:\n{result.stdout}\n{result.stderr}" # Assert report.html file exists assert os.path.exists('report.html'), "HTML report file was not created" # Read report content with open('report.html', 'r', encoding='utf-8') as f: content = f.read() # Check that test function name appears in report assert re.search(r'test_generate_html_report', content), "Test name not found in HTML report" # Check that status 'passed' or 'failed' appears assert re.search(r'passed|failed', content, re.IGNORECASE), "Test status not found in HTML report"
This script runs pytest with the --html=report.html option to generate an HTML report.
We use subprocess.run to execute the pytest command and capture its output and return code.
We assert that pytest finishes successfully by checking returncode == 0.
Then we check if the report.html file was created.
Finally, we open the report file and verify it contains the test function name and a test status like 'passed' or 'failed'.
This ensures the HTML report was generated correctly and includes test results.
Now add data-driven testing with 3 different simple test functions and generate a combined HTML report
pytest-html in testing?report.html using pytest?pytest --html=filename.html.pytest --html=results.html, what will happen after the tests finish?pytest --html=results.html tells pytest to run tests and save results in an HTML file named results.html.pytest --html=report.html but no HTML report was created. What is the most likely cause?--html option to work.pytest --html=report.html --self-contained-html and add environment info via pytest hooks uses the correct command and mentions adding info via hooks, which is the recommended way. Run pytest --html=report.html only; environment info is added automatically is incorrect because environment info is not automatic. Manually edit the HTML report after generation to add environment info is manual and error-prone. Use pytest --html=report.html --env-info option is invalid; no such option exists.Pass the test and this pattern moves unknown