Pytest не видит журналы тестируемой функции

У меня есть такое приложение для фляги

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 не работает, и я думаю, что на самом деле речь идет о выводе тестовой функции, а не тестируемой функции.

Как мне посмотреть логи тестируемой функции?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
6
0
2 254
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Причиной может быть Этот. Просто создайте 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 и другие опции.

Надеюсь это поможет.

Кажется странным отказаться от видимости журналов как функции ... но я рад, что есть способ просмотреть журналы из моей протестированной функции

Daniel Watrous 21.12.2018 23:01

Другие вопросы по теме