Skip to content

Commit 46e2b91

Browse files
Added check for pytest as test runner for IS_RUNNING_TESTS. (#2137)
* Added check for pytest as test runner for IS_RUNNING_TESTS. * Move logic to determine IS_RUNNING_TESTS to a function This makes the logic testable. * Added words to spelling list for the changelog.
1 parent 7d68e0e commit 46e2b91

File tree

6 files changed

+40
-3
lines changed

6 files changed

+40
-3
lines changed

debug_toolbar/settings.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import sys
23
import warnings
34
from functools import cache
@@ -6,6 +7,15 @@
67
from django.dispatch import receiver
78
from django.test.signals import setting_changed
89

10+
11+
def _is_running_tests():
12+
"""
13+
Helper function to support testing default value for
14+
IS_RUNNING_TESTS
15+
"""
16+
return "test" in sys.argv or "PYTEST_VERSION" in os.environ
17+
18+
919
CONFIG_DEFAULTS = {
1020
# Toolbar options
1121
"DISABLE_PANELS": {
@@ -43,7 +53,7 @@
4353
"SQL_WARNING_THRESHOLD": 500, # milliseconds
4454
"OBSERVE_REQUEST_CALLBACK": "debug_toolbar.toolbar.observe_request",
4555
"TOOLBAR_LANGUAGE": None,
46-
"IS_RUNNING_TESTS": "test" in sys.argv,
56+
"IS_RUNNING_TESTS": _is_running_tests(),
4757
"UPDATE_ON_FETCH": False,
4858
}
4959

docs/changes.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Change log
44
Pending
55
-------
66

7+
* Added support for checking if pytest as the test runner when determining
8+
if tests are running.
9+
710
5.2.0 (2025-04-29)
811
------------------
912

docs/configuration.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ Toolbar options
7777

7878
* ``IS_RUNNING_TESTS``
7979

80-
Default: ``"test" in sys.argv``
80+
Default: ``"test" in sys.argv or "PYTEST_VERSION" in os.environ``
8181

8282
This setting whether the application is running tests. If this resolves to
8383
``True``, the toolbar will prevent you from running tests. This should only

docs/installation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ can do this by adding another setting:
165165

166166
.. code-block:: python
167167
168-
TESTING = "test" in sys.argv
168+
TESTING = "test" in sys.argv or "PYTEST_VERSION" in os.environ
169169
170170
if not TESTING:
171171
INSTALLED_APPS = [

docs/spelling_wordlist.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ psycopg
4949
py
5050
pyflame
5151
pylibmc
52+
pytest
5253
pyupgrade
5354
querysets
5455
refactoring
@@ -65,5 +66,6 @@ theming
6566
timeline
6667
tox
6768
uWSGI
69+
unhandled
6870
unhashable
6971
validator

tests/test_settings.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from unittest.mock import patch
2+
3+
from django.test import TestCase
4+
5+
from debug_toolbar.settings import _is_running_tests
6+
7+
8+
class SettingsTestCase(TestCase):
9+
@patch("debug_toolbar.settings.sys")
10+
@patch("debug_toolbar.settings.os")
11+
def test_is_running_tests(self, mock_os, mock_sys):
12+
mock_sys.argv = "test"
13+
mock_os.environ = {}
14+
self.assertTrue(_is_running_tests())
15+
16+
mock_sys.argv = ""
17+
mock_os.environ = {}
18+
self.assertFalse(_is_running_tests())
19+
20+
mock_sys.argv = ""
21+
mock_os.environ = {"PYTEST_VERSION": "1"}
22+
self.assertTrue(_is_running_tests())

0 commit comments

Comments
 (0)