import pytest from flask import Flask, json from werkzeug.exceptions import HTTPException, NotFound, InternalServerError from unittest.mock import patch from flask import branch_coverage, track_coverage def create_app(): app = Flask(__name__) @app.route('/success') def success(): track_coverage('dispatch_request_success') return 'Success', 200 @app.route('/error') def error(): track_coverage('dispatch_request_error') raise InternalServerError(description='Error occurred') @app.route('/not_found') def not_found(): track_coverage('dispatch_request_not_found') raise NotFound(description='This is a 404') return app @pytest.fixture def client(): app = create_app() app.config['TESTING'] = True with app.test_client() as client: yield client def test_success_path(client): response = client.get('/success') assert response.status_code == 200 assert response.data == b'Success' assert branch_coverage['dispatch_request_success'] def test_error_handling(client): response = client.get('/error') assert response.status_code == 500 assert 'Error occurred' in response.get_data(as_text=True) assert branch_coverage['dispatch_request_error'] def test_not_found_handling(client): response = client.get('/not_found') assert response.status_code == 404 assert 'This is a 404' in response.get_data(as_text=True) assert branch_coverage['dispatch_request_not_found'] def test_no_route(client): response = client.get('/no_route') assert response.status_code == 404 def save_coverage_to_json(file_path='coverage_result.json'): with open(file_path, 'w') as json_file: json.dump(branch_coverage, json_file, indent=4)