Merge pull request #4279 from williamjamir/improve-warning-msg

Improve the warning message for the implicitly str conversion
This commit is contained in:
Bruno Oliveira 2018-11-02 08:22:15 -03:00 committed by GitHub
commit 48f52b1be0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

View File

@ -0,0 +1 @@
Improve message and stack level of warnings issued by ``monkeypatch.setenv`` when the value of the environment variable is not a ``str``.

View File

@ -230,10 +230,12 @@ class MonkeyPatch(object):
if not isinstance(value, str): if not isinstance(value, str):
warnings.warn( warnings.warn(
pytest.PytestWarning( pytest.PytestWarning(
"Environment variable value {!r} should be str, converted to str implicitly".format( "Value of environment variable {name} type should be str, but got "
value "{value!r} (type: {type}); converted to str implicitly".format(
name=name, value=value, type=type(value).__name__
) )
) ),
stacklevel=2,
) )
value = str(value) value = str(value)
if prepend and name in os.environ: if prepend and name in os.environ:

View File

@ -3,6 +3,7 @@ from __future__ import division
from __future__ import print_function from __future__ import print_function
import os import os
import re
import sys import sys
import textwrap import textwrap
@ -226,9 +227,10 @@ class TestEnvironWarnings(object):
def test_setenv_non_str_warning(self, monkeypatch): def test_setenv_non_str_warning(self, monkeypatch):
value = 2 value = 2
msg = ( msg = (
"Environment variable value {!r} should be str, converted to str implicitly" "Value of environment variable PYTEST_INTERNAL_MY_VAR type should be str, "
"but got 2 (type: int); converted to str implicitly"
) )
with pytest.warns(pytest.PytestWarning, match=msg.format(value)): with pytest.warns(pytest.PytestWarning, match=re.escape(msg)):
monkeypatch.setenv(str(self.VAR_NAME), value) monkeypatch.setenv(str(self.VAR_NAME), value)