1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
From 5ce121dd841e2dc2594d0ed3954278f4101d3521 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Tue, 14 Jul 2026 12:07:37 +0200
Subject: [PATCH] Replace the use of private `monkeypatch` fixture API
---
tests/conftest.py | 43 +++++++++++++------------------------------
tests/test_cli.py | 8 ++++----
2 files changed, 17 insertions(+), 34 deletions(-)
diff --git a/tests/conftest.py b/tests/conftest.py
index 214f520338..60bf5f4baf 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -2,43 +2,26 @@
import sys
import pytest
-from _pytest import monkeypatch
from flask import Flask
from flask.globals import request_ctx
-@pytest.fixture(scope="session", autouse=True)
-def _standard_os_environ():
- """Set up ``os.environ`` at the start of the test session to have
- standard values. Returns a list of operations that is used by
- :func:`._reset_os_environ` after each test.
- """
- mp = monkeypatch.MonkeyPatch()
- out = (
- (os.environ, "FLASK_ENV_FILE", monkeypatch.notset),
- (os.environ, "FLASK_APP", monkeypatch.notset),
- (os.environ, "FLASK_DEBUG", monkeypatch.notset),
- (os.environ, "FLASK_RUN_FROM_CLI", monkeypatch.notset),
- (os.environ, "WERKZEUG_RUN_MAIN", monkeypatch.notset),
- )
-
- for _, key, value in out:
- if value is monkeypatch.notset:
- mp.delenv(key, False)
- else:
- mp.setenv(key, value)
-
- yield out
- mp.undo()
-
-
@pytest.fixture(autouse=True)
-def _reset_os_environ(monkeypatch, _standard_os_environ):
- """Reset ``os.environ`` to the standard environ after each test,
- in case a test changed something without cleaning up.
+def _standard_os_environ(monkeypatch):
+ """Set up ``os.environ`` at the start of every test to have
+ standard values.
"""
- monkeypatch._setitem.extend(_standard_os_environ)
+ for key in (
+ "FLASK_ENV_FILE",
+ "FLASK_APP",
+ "FLASK_DEBUG",
+ "FLASK_RUN_FROM_CLI",
+ "WERKZEUG_RUN_MAIN",
+ ):
+ monkeypatch.delenv(key, False)
+
+ yield
@pytest.fixture
diff --git a/tests/test_cli.py b/tests/test_cli.py
index e254c1dd8e..79025dda7f 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -11,7 +11,6 @@
import click
import pytest
-from _pytest.monkeypatch import notset
from click.testing import CliRunner
from flask import Blueprint
@@ -534,9 +533,8 @@ def dotenv_not_available():
@need_dotenv
def test_load_dotenv(monkeypatch):
- # can't use monkeypatch.delitem since the keys don't exist yet
for item in ("FOO", "BAR", "SPAM", "HAM"):
- monkeypatch._setitem.append((os.environ, item, notset))
+ monkeypatch.delenv(item, False)
monkeypatch.setenv("EGGS", "3")
monkeypatch.chdir(test_path)
@@ -559,7 +557,7 @@ def test_load_dotenv(monkeypatch):
@need_dotenv
def test_dotenv_path(monkeypatch):
for item in ("FOO", "BAR", "EGGS"):
- monkeypatch._setitem.append((os.environ, item, notset))
+ monkeypatch.delenv(item, False)
load_dotenv(test_path / ".flaskenv")
assert Path.cwd() == cwd
@@ -567,6 +565,7 @@ def test_dotenv_path(monkeypatch):
def test_dotenv_optional(monkeypatch):
+ monkeypatch.delenv("FOO", False)
monkeypatch.setitem(sys.modules, "dotenv", None)
monkeypatch.chdir(test_path)
load_dotenv()
@@ -575,6 +574,7 @@ def test_dotenv_optional(monkeypatch):
@need_dotenv
def test_disable_dotenv_from_env(monkeypatch, runner):
+ monkeypatch.delenv("FOO", False)
monkeypatch.chdir(test_path)
monkeypatch.setitem(os.environ, "FLASK_SKIP_DOTENV", "1")
runner.invoke(FlaskGroup())
|