pytest - аргумент ключевого слова monkeypatch по умолчанию - PullRequest
0 голосов
/ 17 декабря 2018

Я бы хотел проверить поведение функции по умолчанию.У меня есть следующее:

# app/foo.py
DEFAULT_VALUE = 'hello'

def bar(text=DEFAULT_VALUE):
    print(text)
# test/test_app.py
import app

def test_app(monkeypatch):
    monkeypatch.setattr('app.foo.DEFAULT_VALUE', 'patched')
    app.foo.bar()
    assert 0

Вывод hello;не то, что я хотел.

Одним из решений является явная передача значения по умолчанию: app.foo.bar(text=app.foo.DEFAULT_VALUE).

Но я нахожу интересным, что это не проблема, если по умолчаниюглобальная область действия:

# app/foo.py
DEFAULT_VALUE = 'hello'

def bar():
    print(DEFAULT_VALUE)

Вывод patched.

Почему это происходит?И есть ли лучшее решение, чем явная передача по умолчанию?

...