У меня есть такое приложение для фляги
from flask import Flask
import logging
app = Flask(__name__)
@app.route('/')
def catch_all():
logging.warning("I'm a warning")
return "This is a REST API"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)
При запуске вижу в логах ПРЕДУПРЕЖДЕНИЕ
WARNING:root:I'm a warning
Затем я создаю такой тест
import fulfillment
def test_index():
fulfillment.app.testing = True
client = fulfillment.app.test_client()
r = client.get('/')
assert r.status_code == 200
assert 'This is a REST API' in r.data.decode('utf-8')
Когда я запускаю тест с помощью pytest, я не вижу сообщения журнала тестируемой функции. Я нашел Как я могу увидеть нормальный вывод на печать, созданный во время запуска pytest?, который звучит похоже, но опция pytest -s не работает, и я думаю, что на самом деле речь идет о выводе тестовой функции, а не тестируемой функции.
Как мне посмотреть логи тестируемой функции?






Причиной может быть Этот. Просто создайте pytest.ini с настройками.
[pytest]
log_cli=true
log_level=NOTSET
Работает отлично:
pytest test_my.py
# ...
-------------------------------- live log call ---------------------------------
fulfillment.py 37 WARNING I'm a warning
PASSED [100%]
=========================== 1 passed in 0.09 seconds ===========================
Также вы можете установить log_format, log_date_format и другие опции.
Надеюсь это поможет.
Кажется странным отказаться от видимости журналов как функции ... но я рад, что есть способ просмотреть журналы из моей протестированной функции