TestRoutes Class — flask Architecture
Architecture documentation for the TestRoutes class in test_cli.py from the flask codebase.
Entity Profile
Dependency Diagram
graph TD 87d8059b_b546_2f64_06d3_da6459a325ff["TestRoutes"] 62c63da0_a9c3_ab0a_4c48_a9413eac90e3["test_cli.py"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|defined in| 62c63da0_a9c3_ab0a_4c48_a9413eac90e3 107feeec_8921_f812_5ff2_d6141cc2d571["app()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| 107feeec_8921_f812_5ff2_d6141cc2d571 cfcc1ba6_ce20_a6d4_f8cd_998cddafcbac["invoke()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| cfcc1ba6_ce20_a6d4_f8cd_998cddafcbac ff594b6c_d119_915e_507d_d4a50cb7e11e["expect_order()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| ff594b6c_d119_915e_507d_d4a50cb7e11e 1c2463dc_53b4_7b60_5549_5a16cce48390["test_simple()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| 1c2463dc_53b4_7b60_5549_5a16cce48390 02d6c36b_d894_2580_16f5_743c55150675["test_sort()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| 02d6c36b_d894_2580_16f5_743c55150675 5d659455_1606_5d60_8717_db37f5b8ebfb["test_all_methods()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| 5d659455_1606_5d60_8717_db37f5b8ebfb ba76b4db_0e62_e6f9_a6ed_ed45f11a6658["test_no_routes()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| ba76b4db_0e62_e6f9_a6ed_ed45f11a6658 1703d04d_dcc6_a574_2487_2a39233b8f95["test_subdomain()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| 1703d04d_dcc6_a574_2487_2a39233b8f95 8222d8c0_6967_636b_520a_02e5f4863438["test_host()"] 87d8059b_b546_2f64_06d3_da6459a325ff -->|method| 8222d8c0_6967_636b_520a_02e5f4863438
Relationship Graph
Source Code
tests/test_cli.py lines 446–518
class TestRoutes:
@pytest.fixture
def app(self):
app = Flask(__name__)
app.add_url_rule(
"/get_post/<int:x>/<int:y>",
methods=["GET", "POST"],
endpoint="yyy_get_post",
)
app.add_url_rule("/zzz_post", methods=["POST"], endpoint="aaa_post")
return app
@pytest.fixture
def invoke(self, app, runner):
cli = FlaskGroup(create_app=lambda: app)
return partial(runner.invoke, cli)
def expect_order(self, order, output):
# skip the header and match the start of each row
for expect, line in zip(order, output.splitlines()[2:], strict=False):
# do this instead of startswith for nicer pytest output
assert line[: len(expect)] == expect
def test_simple(self, invoke):
result = invoke(["routes"])
assert result.exit_code == 0
self.expect_order(["aaa_post", "static", "yyy_get_post"], result.output)
def test_sort(self, app, invoke):
default_output = invoke(["routes"]).output
endpoint_output = invoke(["routes", "-s", "endpoint"]).output
assert default_output == endpoint_output
self.expect_order(
["static", "yyy_get_post", "aaa_post"],
invoke(["routes", "-s", "methods"]).output,
)
self.expect_order(
["yyy_get_post", "static", "aaa_post"],
invoke(["routes", "-s", "rule"]).output,
)
match_order = [r.endpoint for r in app.url_map.iter_rules()]
self.expect_order(match_order, invoke(["routes", "-s", "match"]).output)
def test_all_methods(self, invoke):
output = invoke(["routes"]).output
assert "GET, HEAD, OPTIONS, POST" not in output
output = invoke(["routes", "--all-methods"]).output
assert "GET, HEAD, OPTIONS, POST" in output
def test_no_routes(self, runner):
app = Flask(__name__, static_folder=None)
cli = FlaskGroup(create_app=lambda: app)
result = runner.invoke(cli, ["routes"])
assert result.exit_code == 0
assert "No routes were registered." in result.output
def test_subdomain(self, runner):
app = Flask(__name__, static_folder=None)
app.add_url_rule("/a", subdomain="a", endpoint="a")
app.add_url_rule("/b", subdomain="b", endpoint="b")
cli = FlaskGroup(create_app=lambda: app)
result = runner.invoke(cli, ["routes"])
assert result.exit_code == 0
assert "Subdomain" in result.output
def test_host(self, runner):
app = Flask(__name__, static_folder=None, host_matching=True)
app.add_url_rule("/a", host="a", endpoint="a")
app.add_url_rule("/b", host="b", endpoint="b")
cli = FlaskGroup(create_app=lambda: app)
result = runner.invoke(cli, ["routes"])
assert result.exit_code == 0
assert "Host" in result.output
Defined In
Source
Frequently Asked Questions
What is the TestRoutes class?
TestRoutes is a class in the flask codebase, defined in tests/test_cli.py.
Where is TestRoutes defined?
TestRoutes is defined in tests/test_cli.py at line 446.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free