Skip to content

Commit a04eabc

Browse files
authored
Move assert_metric_equal out of base class (#390)
1 parent 1b5cf42 commit a04eabc

File tree

8 files changed

+53
-73
lines changed

8 files changed

+53
-73
lines changed

django_prometheus/tests/end2end/testapp/test_caches.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
from django.test import TestCase
33
from redis import RedisError
44

5-
from django_prometheus.testutils import PrometheusTestCaseMixin, get_metric
5+
from django_prometheus.testutils import assert_metric_equal, get_metric
66

77

8-
class TestCachesMetrics(PrometheusTestCaseMixin, TestCase):
8+
class TestCachesMetrics(TestCase):
99
"""Test django_prometheus.caches metrics."""
1010

1111
def test_counters(self):
@@ -35,9 +35,9 @@ def test_counters(self):
3535

3636
assert result == "default"
3737

38-
self.assertMetricEquals(total_before + 4, "django_cache_get_total", backend=backend)
39-
self.assertMetricEquals(hit_before + 2, "django_cache_get_hits_total", backend=backend)
40-
self.assertMetricEquals(
38+
assert_metric_equal(total_before + 4, "django_cache_get_total", backend=backend)
39+
assert_metric_equal(hit_before + 2, "django_cache_get_hits_total", backend=backend)
40+
assert_metric_equal(
4141
miss_before + 2,
4242
"django_cache_get_misses_total",
4343
backend=backend,
@@ -55,19 +55,19 @@ def test_redis_cache_fail(self):
5555
tested_cache = caches["stopped_redis_ignore_exception"]
5656
tested_cache.get("foo1")
5757

58-
self.assertMetricEquals(hit_before, "django_cache_get_hits_total", backend=supported_cache)
59-
self.assertMetricEquals(miss_before, "django_cache_get_misses_total", backend=supported_cache)
60-
self.assertMetricEquals(total_before + 1, "django_cache_get_total", backend=supported_cache)
61-
self.assertMetricEquals(fail_before + 1, "django_cache_get_fail_total", backend=supported_cache)
58+
assert_metric_equal(hit_before, "django_cache_get_hits_total", backend=supported_cache)
59+
assert_metric_equal(miss_before, "django_cache_get_misses_total", backend=supported_cache)
60+
assert_metric_equal(total_before + 1, "django_cache_get_total", backend=supported_cache)
61+
assert_metric_equal(fail_before + 1, "django_cache_get_fail_total", backend=supported_cache)
6262

6363
tested_cache = caches["stopped_redis"]
6464
with self.assertRaises(RedisError):
6565
tested_cache.get("foo1")
6666

67-
self.assertMetricEquals(hit_before, "django_cache_get_hits_total", backend=supported_cache)
68-
self.assertMetricEquals(miss_before, "django_cache_get_misses_total", backend=supported_cache)
69-
self.assertMetricEquals(total_before + 2, "django_cache_get_total", backend=supported_cache)
70-
self.assertMetricEquals(fail_before + 2, "django_cache_get_fail_total", backend=supported_cache)
67+
assert_metric_equal(hit_before, "django_cache_get_hits_total", backend=supported_cache)
68+
assert_metric_equal(miss_before, "django_cache_get_misses_total", backend=supported_cache)
69+
assert_metric_equal(total_before + 2, "django_cache_get_total", backend=supported_cache)
70+
assert_metric_equal(fail_before + 2, "django_cache_get_fail_total", backend=supported_cache)
7171

7272
def test_cache_version_support(self):
7373
supported_caches = [

django_prometheus/tests/end2end/testapp/test_db.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
from django.test import TestCase
55

66
from django_prometheus.testutils import (
7-
PrometheusTestCaseMixin,
87
assert_metric_compare,
98
assert_metric_diff,
9+
assert_metric_equal,
1010
get_metric,
1111
save_registry,
1212
)
1313

1414

15-
class BaseDbMetricTest(PrometheusTestCaseMixin, TestCase):
15+
class BaseDbMetricTest(TestCase):
1616
# https://docs.djangoproject.com/en/2.2/topics/testing/tools/#django.test.SimpleTestCase.databases
1717
databases = "__all__"
1818

@@ -47,7 +47,7 @@ def test_counters(self):
4747
except Exception:
4848
pass
4949

50-
self.assertMetricEquals(
50+
assert_metric_equal(
5151
1,
5252
"django_db_errors_total",
5353
alias="test_db_1",

django_prometheus/tests/end2end/testapp/test_middleware.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
from testapp.views import ObjectionException
33

44
from django_prometheus.testutils import (
5-
PrometheusTestCaseMixin,
65
assert_metric_diff,
6+
assert_metric_equal,
77
save_registry,
88
)
99

@@ -25,7 +25,7 @@ def T(metric_name):
2525

2626

2727
@override_settings(PROMETHEUS_LATENCY_BUCKETS=(0.05, 1.0, 2.0, 4.0, 5.0, 10.0, float("inf")))
28-
class TestMiddlewareMetrics(PrometheusTestCaseMixin, SimpleTestCase):
28+
class TestMiddlewareMetrics(SimpleTestCase):
2929
"""Test django_prometheus.middleware.
3030
3131
Note that counters related to exceptions can't be tested as
@@ -74,7 +74,7 @@ def test_request_counters(self):
7474
# <=128 bytes bodies.
7575
assert_metric_diff(registry, 3, M("requests_body_total_bytes_bucket"), le="0.0")
7676
assert_metric_diff(registry, 4, M("requests_body_total_bytes_bucket"), le="128.0")
77-
self.assertMetricEquals(None, M("responses_total_by_templatename"), templatename="help.html")
77+
assert_metric_equal(None, M("responses_total_by_templatename"), templatename="help.html")
7878
assert_metric_diff(registry, 3, T("responses_total_by_templatename"), templatename="index.html")
7979
assert_metric_diff(registry, 4, T("responses_total_by_status"), status="200")
8080
assert_metric_diff(registry, 0, M("responses_body_total_bytes_bucket"), le="0.0")

django_prometheus/tests/end2end/testapp/test_middleware_custom_labels.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99
PrometheusAfterMiddleware,
1010
PrometheusBeforeMiddleware,
1111
)
12-
from django_prometheus.testutils import (
13-
PrometheusTestCaseMixin,
14-
assert_metric_diff,
15-
save_registry,
16-
)
12+
from django_prometheus.testutils import assert_metric_diff, save_registry
1713

1814
EXTENDED_METRICS = [
1915
M("requests_latency_seconds_by_view_method"),
@@ -49,7 +45,7 @@ def label_metric(self, metric, request, response=None, **labels):
4945
"testapp.test_middleware_custom_labels.AppMetricsAfterMiddleware",
5046
)
5147
)
52-
class TestMiddlewareMetricsWithCustomLabels(PrometheusTestCaseMixin, SimpleTestCase):
48+
class TestMiddlewareMetricsWithCustomLabels(SimpleTestCase):
5349
@classmethod
5450
def setUpClass(cls):
5551
super().setUpClass()

django_prometheus/tests/end2end/testapp/test_migrations.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.test import SimpleTestCase
44

55
from django_prometheus.migrations import ExportMigrationsForDatabase
6-
from django_prometheus.testutils import PrometheusTestCaseMixin
6+
from django_prometheus.testutils import assert_metric_equal
77

88

99
def M(metric_name):
@@ -15,7 +15,7 @@ def M(metric_name):
1515
return "django_migrations_%s" % metric_name
1616

1717

18-
class TestMigrations(PrometheusTestCaseMixin, SimpleTestCase):
18+
class TestMigrations(SimpleTestCase):
1919
"""Test migration counters."""
2020

2121
def test_counters(self):
@@ -30,7 +30,7 @@ def test_counters(self):
3030
executor.loader.applied_migrations = {"b", "c"}
3131
ExportMigrationsForDatabase("fakedb2", executor)
3232

33-
self.assertMetricEquals(3, M("applied_total"), connection="fakedb1")
34-
self.assertMetricEquals(0, M("unapplied_total"), connection="fakedb1")
35-
self.assertMetricEquals(2, M("applied_total"), connection="fakedb2")
36-
self.assertMetricEquals(1, M("unapplied_total"), connection="fakedb2")
33+
assert_metric_equal(3, M("applied_total"), connection="fakedb1")
34+
assert_metric_equal(0, M("unapplied_total"), connection="fakedb1")
35+
assert_metric_equal(2, M("applied_total"), connection="fakedb2")
36+
assert_metric_equal(1, M("unapplied_total"), connection="fakedb2")

django_prometheus/tests/end2end/testapp/test_models.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
from django.test import TestCase
22
from testapp.models import Dog, Lawn
33

4-
from django_prometheus.testutils import (
5-
PrometheusTestCaseMixin,
6-
assert_metric_diff,
7-
save_registry,
8-
)
4+
from django_prometheus.testutils import assert_metric_diff, save_registry
95

106

117
def M(metric_name):
@@ -17,7 +13,7 @@ def M(metric_name):
1713
return "django_model_%s" % metric_name
1814

1915

20-
class TestModelMetrics(PrometheusTestCaseMixin, TestCase):
16+
class TestModelMetrics(TestCase):
2117
"""Test django_prometheus.models."""
2218

2319
def test_counters(self):

django_prometheus/tests/test_testutils.py

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import prometheus_client
66

77
from django_prometheus.testutils import (
8-
PrometheusTestCaseMixin,
98
assert_metric_diff,
9+
assert_metric_equal,
1010
assert_metric_no_diff,
1111
assert_metric_not_equal,
1212
get_metric,
@@ -16,17 +16,6 @@
1616
)
1717

1818

19-
class SomeTestCase(PrometheusTestCaseMixin):
20-
"""A class that pretends to be a unit test."""
21-
22-
def __init__(self):
23-
self.passes = True
24-
super().__init__()
25-
26-
def assertEqual(self, left, right, *args, **kwargs):
27-
self.passes = self.passes and (left == right)
28-
29-
3019
class PrometheusTestCaseMixinTest(unittest.TestCase):
3120
def setUp(self):
3221
self.registry = prometheus_client.CollectorRegistry()
@@ -42,7 +31,6 @@ def setUp(self):
4231
self.some_labelled_gauge.labels("pink", "royal").set(2)
4332
self.some_labelled_gauge.labels("carmin", "indigo").set(3)
4433
self.some_labelled_gauge.labels("carmin", "royal").set(4)
45-
self.test_case = SomeTestCase()
4634

4735
def test_get_metric(self):
4836
"""Tests get_metric."""
@@ -71,25 +59,25 @@ def test_get_metrics_vector(self):
7159
key=itemgetter(1),
7260
) == sorted(vector, key=itemgetter(1))
7361

74-
def testAssertMetricEquals(self):
75-
"""Tests assertMetricEquals."""
62+
def test_assert_metric_equal(self):
63+
"""Tests assert_metric_equal."""
7664
# First we test that a scalar metric can be tested.
77-
self.test_case.assertMetricEquals(42, "some_gauge", registry=self.registry)
78-
assert self.test_case.passes is True
65+
assert_metric_equal(42, "some_gauge", registry=self.registry)
66+
7967
assert_metric_not_equal(43, "some_gauge", registry=self.registry)
8068

81-
# Here we test that assertMetricEquals fails on nonexistent gauges.
69+
# Here we test that assert_metric_equal fails on nonexistent gauges.
8270
assert_metric_not_equal(42, "some_nonexistent_gauge", registry=self.registry)
8371

8472
# Here we test that labelled metrics can be tested.
85-
self.test_case.assertMetricEquals(
73+
assert_metric_equal(
8674
1,
8775
"some_labelled_gauge",
8876
registry=self.registry,
8977
labelred="pink",
9078
labelblue="indigo",
9179
)
92-
assert self.test_case.passes is True
80+
9381
assert_metric_not_equal(
9482
1,
9583
"some_labelled_gauge",

django_prometheus/testutils.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@
2626
"""
2727

2828

29-
class PrometheusTestCaseMixin:
30-
"""A collection of utilities that make it easier to write test cases
31-
that interact with metrics.
32-
"""
29+
"""A collection of utilities that make it easier to write test cases
30+
that interact with metrics.
31+
"""
3332

34-
def assertMetricEquals(self, expected_value, metric_name, registry=REGISTRY, **labels):
35-
"""Asserts that metric_name{**labels} == expected_value."""
36-
value = get_metric(metric_name, registry=registry, **labels)
37-
assert_err = METRIC_EQUALS_ERR_EXPLANATION % (
38-
metric_name,
39-
format_labels(labels),
40-
value,
41-
expected_value,
42-
metric_name,
43-
format_vector(get_metrics_vector(metric_name)),
44-
)
45-
assert expected_value == value, assert_err
33+
34+
def assert_metric_equal(expected_value, metric_name, registry=REGISTRY, **labels):
35+
"""Asserts that metric_name{**labels} == expected_value."""
36+
value = get_metric(metric_name, registry=registry, **labels)
37+
assert_err = METRIC_EQUALS_ERR_EXPLANATION % (
38+
metric_name,
39+
format_labels(labels),
40+
value,
41+
expected_value,
42+
metric_name,
43+
format_vector(get_metrics_vector(metric_name)),
44+
)
45+
assert expected_value == value, assert_err
4646

4747

4848
def assert_metric_diff(frozen_registry, expected_diff, metric_name, registry=REGISTRY, **labels):

0 commit comments

Comments
 (0)