forked from pytest-dev/pytest-asyncio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_legacy_mode.py
115 lines (91 loc) · 2.98 KB
/
test_legacy_mode.py
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
from textwrap import dedent
pytest_plugins = "pytester"
LEGACY_MODE = (
"The 'asyncio_mode' default value will change to 'strict' in future, "
"please explicitly use 'asyncio_mode=strict' or 'asyncio_mode=auto' "
"in pytest configuration file."
)
LEGACY_ASYNCIO_FIXTURE = (
"'@pytest.fixture' is applied to {name} "
"in 'legacy' mode, "
"please replace it with '@pytest_asyncio.pytest_asyncio' as a preparation "
"for switching to 'strict' mode (or use 'auto' mode to seamlessly handle "
"all these fixtures as asyncio-driven)."
).format(name="*")
def test_warning_for_legacy_mode_cmdline(pytester):
pytester.makepyfile(
dedent(
"""\
import asyncio
import pytest
pytest_plugins = 'pytest_asyncio'
@pytest.mark.asyncio
async def test_a():
await asyncio.sleep(0)
"""
)
)
result = pytester.runpytest("--asyncio-mode=legacy")
assert result.parseoutcomes()["warnings"] == 1
result.stdout.fnmatch_lines(["*" + LEGACY_MODE + "*"])
def test_warning_for_legacy_mode_cfg(pytester):
pytester.makepyfile(
dedent(
"""\
import asyncio
import pytest
pytest_plugins = 'pytest_asyncio'
@pytest.mark.asyncio
async def test_a():
await asyncio.sleep(0)
"""
)
)
pytester.makefile(".ini", pytest="[pytest]\nasyncio_mode = legacy\n")
result = pytester.runpytest()
assert result.parseoutcomes()["warnings"] == 1
result.stdout.fnmatch_lines(["*" + LEGACY_MODE + "*"])
result.stdout.no_fnmatch_line("*" + LEGACY_ASYNCIO_FIXTURE + "*")
def test_warning_for_legacy_fixture(pytester):
pytester.makepyfile(
dedent(
"""\
import asyncio
import pytest
pytest_plugins = 'pytest_asyncio'
@pytest.fixture
async def fixture_a():
await asyncio.sleep(0)
return 1
@pytest.mark.asyncio
async def test_a(fixture_a):
await asyncio.sleep(0)
assert fixture_a == 1
"""
)
)
result = pytester.runpytest("--asyncio-mode=legacy")
assert result.parseoutcomes()["warnings"] == 2
result.stdout.fnmatch_lines(["*" + LEGACY_ASYNCIO_FIXTURE + "*"])
def test_warning_for_legacy_method_fixture(pytester):
pytester.makepyfile(
dedent(
"""\
import asyncio
import pytest
pytest_plugins = 'pytest_asyncio'
class TestA:
@pytest.fixture
async def fixture_a(self):
await asyncio.sleep(0)
return 1
@pytest.mark.asyncio
async def test_a(self, fixture_a):
await asyncio.sleep(0)
assert fixture_a == 1
"""
)
)
result = pytester.runpytest("--asyncio-mode=legacy")
assert result.parseoutcomes()["warnings"] == 2
result.stdout.fnmatch_lines(["*" + LEGACY_ASYNCIO_FIXTURE + "*"])