Skip to content

Commit ce5d5bc

Browse files
authored
tests: fix test_fixtures with -v (#761)
* tests: fix test_fixtures with -v * Travis: single job with PYTEST_ADDOPTS=-vv
1 parent 1a79bd1 commit ce5d5bc

File tree

2 files changed

+58
-41
lines changed

2 files changed

+58
-41
lines changed

.travis.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ jobs:
66
include:
77
- stage: baseline
88
python: 3.6
9-
env: TOXENV=py36-dj20-postgres-xdist-coverage
9+
env:
10+
- TOXENV=py36-dj20-postgres-xdist-coverage
11+
# Test in verbose mode.
12+
- PYTEST_ADDOPTS=-vv
1013
services:
1114
- postgresql
1215
- python: 3.6

tests/test_fixtures.py

Lines changed: 54 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
from __future__ import with_statement
88

99
import socket
10+
from contextlib import contextmanager
1011

1112
import pytest
12-
13-
from django.db import connection, transaction
1413
from django.conf import settings as real_settings
1514
from django.core import mail
15+
from django.db import connection, transaction
1616
from django.test.client import Client, RequestFactory
1717
from django.test.testcases import connections_support_transactions
1818
from django.utils.encoding import force_text
@@ -22,6 +22,18 @@
2222
from pytest_django_test.compat import HTTPError, urlopen
2323

2424

25+
@contextmanager
26+
def nonverbose_config(config):
27+
"""Ensure that pytest's config.option.verbose is <= 0."""
28+
if config.option.verbose <= 0:
29+
yield
30+
else:
31+
saved = config.option.verbose
32+
config.option.verbose = 0
33+
yield
34+
config.option.verbose = saved
35+
36+
2537
def test_client(client):
2638
assert isinstance(client, Client)
2739

@@ -53,56 +65,58 @@ def test_rf(rf):
5365

5466

5567
@pytest.mark.django_db
56-
def test_django_assert_num_queries_db(django_assert_num_queries):
57-
with django_assert_num_queries(3):
58-
Item.objects.create(name="foo")
59-
Item.objects.create(name="bar")
60-
Item.objects.create(name="baz")
61-
62-
with pytest.raises(pytest.fail.Exception) as excinfo:
63-
with django_assert_num_queries(2) as captured:
64-
Item.objects.create(name="quux")
65-
assert excinfo.value.args == (
66-
"Expected to perform 2 queries but 1 was done "
67-
"(add -v option to show queries)",
68-
)
69-
assert len(captured.captured_queries) == 1
68+
def test_django_assert_num_queries_db(request, django_assert_num_queries):
69+
with nonverbose_config(request.config):
70+
with django_assert_num_queries(3):
71+
Item.objects.create(name="foo")
72+
Item.objects.create(name="bar")
73+
Item.objects.create(name="baz")
7074

75+
with pytest.raises(pytest.fail.Exception) as excinfo:
76+
with django_assert_num_queries(2) as captured:
77+
Item.objects.create(name="quux")
78+
assert excinfo.value.args == (
79+
"Expected to perform 2 queries but 1 was done "
80+
"(add -v option to show queries)",
81+
)
82+
assert len(captured.captured_queries) == 1
7183

72-
@pytest.mark.django_db
73-
def test_django_assert_max_num_queries_db(django_assert_max_num_queries):
74-
with django_assert_max_num_queries(2):
75-
Item.objects.create(name="1-foo")
76-
Item.objects.create(name="2-bar")
7784

78-
with pytest.raises(pytest.fail.Exception) as excinfo:
79-
with django_assert_max_num_queries(2) as captured:
85+
@pytest.mark.django_db
86+
def test_django_assert_max_num_queries_db(request, django_assert_max_num_queries):
87+
with nonverbose_config(request.config):
88+
with django_assert_max_num_queries(2):
8089
Item.objects.create(name="1-foo")
8190
Item.objects.create(name="2-bar")
82-
Item.objects.create(name="3-quux")
8391

84-
assert excinfo.value.args == (
85-
"Expected to perform 2 queries or less but 3 were done "
86-
"(add -v option to show queries)",
87-
)
88-
assert len(captured.captured_queries) == 3
89-
assert "1-foo" in captured.captured_queries[0]["sql"]
92+
with pytest.raises(pytest.fail.Exception) as excinfo:
93+
with django_assert_max_num_queries(2) as captured:
94+
Item.objects.create(name="1-foo")
95+
Item.objects.create(name="2-bar")
96+
Item.objects.create(name="3-quux")
97+
98+
assert excinfo.value.args == (
99+
"Expected to perform 2 queries or less but 3 were done "
100+
"(add -v option to show queries)",
101+
)
102+
assert len(captured.captured_queries) == 3
103+
assert "1-foo" in captured.captured_queries[0]["sql"]
90104

91105

92106
@pytest.mark.django_db(transaction=True)
93107
def test_django_assert_num_queries_transactional_db(
94-
transactional_db, django_assert_num_queries
108+
request, transactional_db, django_assert_num_queries
95109
):
96-
with transaction.atomic():
97-
98-
with django_assert_num_queries(3):
99-
Item.objects.create(name="foo")
100-
Item.objects.create(name="bar")
101-
Item.objects.create(name="baz")
110+
with nonverbose_config(request.config):
111+
with transaction.atomic():
112+
with django_assert_num_queries(3):
113+
Item.objects.create(name="foo")
114+
Item.objects.create(name="bar")
115+
Item.objects.create(name="baz")
102116

103-
with pytest.raises(pytest.fail.Exception):
104-
with django_assert_num_queries(2):
105-
Item.objects.create(name="quux")
117+
with pytest.raises(pytest.fail.Exception):
118+
with django_assert_num_queries(2):
119+
Item.objects.create(name="quux")
106120

107121

108122
def test_django_assert_num_queries_output(django_testdir):

0 commit comments

Comments
 (0)