userver: /data/code/userver/testsuite/pytest_plugins/pytest_userver/plugins/metrics.py Source File
Loading...
Searching...
No Matches
metrics.py
1"""
2Provides a nicer pytest diff (via `testsuite`'s `CompareVisitor` mechanism)
3for failing `== ` comparisons that involve
4@ref pytest_userver.metrics.MetricsSnapshot "MetricsSnapshot".
5
6@ingroup userver_testsuite_fixtures
7"""
8
9from typing import Any
10
11from testsuite.plugins.assertrepr_compare import CompareVisitor
12
14
15
16def pytest_register_compare_visitors() -> list[CompareVisitor]:
17 return [
18 CompareVisitor(
19 predicate=_is_metrics_comparison,
20 visit=_metrics_compare_visit,
21 ),
22 ]
23
24
25def _is_metrics_comparison(left: Any, right: Any) -> bool:
26 return any(isinstance(operand, pytest_userver.metrics.MetricsSnapshot) for operand in (left, right))
27
28
29def _metrics_compare_visit(left: Any, right: Any, reporter: object) -> tuple[Any, Any]:
30 return (
33 )