Почему pycharm пропускает это освещение при запуске pytest? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть несколько тестов, которые выполняются с кодом python, который обращается к базе данных, используя последнюю версию PyCharm. Все мои тесты проходят успешно и (кроме #pragma no cover lines) ожидают 100% покрытия. В некоторых случаях код не помечается как попадание, хотя на самом деле я знаю, что это потому, что я установил точки останова в тестовом прогоне и пошагово проходил через код.

На рисунке ниже показан один пример, 104,106 и 107 помечены как не пораженные, но они наиболее определенно поражены. Я снял снимок экрана, на котором показана линия в точке останова на линии, которая, по-видимому, не помечена как хит.

Вот функция, которая находится в модуле biz (нет класса / объекта прямой вызов функции), который имеет неполное покрытие, хотя при запуске для тестирования я могу пройти по одной строке:

    def get_schedule_d():
        try:
            with connection() as conn:
                with conn.cursor() as cursor:
                    query = f"""LONG QUERY"""
                    cursor.execute(query)
                    columns = [column[0] for column in cursor.description]
                    for row in cursor:
                        yield dict(zip(columns, row))
         except pyodbc.ProgrammingError:  # pragma: no cover
             return

Вот тестовый пример, который вызывает его. biz.py имеет несколько функций, которые обращаются к базе данных. Это не класс или объект, это просто функции в модуле с именем biz.

    def test_get_schedule():
        sc = list(biz.get_schedule('2019-12-9'))
        scd = list(biz.get_schedule_d('2019-12-9'))
        assert len(sc) == 95
        assert len(scd) == 95

Здесь указывается неполное покрытие ... с точкой разрыва, достигающей линии, отмеченной без покрытия:

enter image description here

...