flask/tests/test_dispatch_request.py
2024-06-27 00:05:42 +00:00

68 lines
1.8 KiB
Python

import pytest
from werkzeug.exceptions import InternalServerError
from werkzeug.exceptions import NotFound
from flask import branch_coverage
from flask import Flask
from flask import json
from flask import 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)