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.