Почему для Python 3.8.3 отключено покрытие unittest? - PullRequest
0 голосов
/ 30 мая 2020

У меня эта версия Python:

3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)]

работает на Windows 10 в PyCharm CE 2020.1.1. Используя очень простой unittest:

# test_simple.py

from unittest import TestCase

class Simple(TestCase):
    def test_one(self):
        self.assertTrue(True)

, я могу запустить python -m coverage run -m unittest, который завершает и генерирует файл .coverage SQLite; и я могу запустить тест из среды IDE, которая выдаст дерево Test Results ; но Run / Run with Coverage отображается серым цветом без объяснения причин.

Я следил за (довольно разрозненной) документацией PyCharm, чтобы сделать Настройки / Сборка, Выполнение, Развертывание , Активировать просмотр покрытия включен, Показать параметры перед применением покрытие редактору , и это не помогло.

Почему покрытие отображается серым цветом и как это исправить?

1 Ответ

2 голосов
/ 01 июня 2020

К сожалению, поддержка покрытия IDE недоступна в версии Community Edition для PyCharm, как можно увидеть в особенности версии .

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

Вы также можете использовать некоторую оболочку, которая создает и открывает отчет HTML. Пример такой оболочки, которая использует pytest с покрытием, можно найти в этой записи блога . Вот сценарий, использованный в этом блоге (обратите внимание, что я изменил путь покрытия для работы с текущими версиями):

import os
import subprocess
import webbrowser


def main():
    subprocess.call(['coverage', 'erase'])    
    subprocess.call(['coverage', 'run', '--module', 'pytest'])
    subprocess.call(['coverage', 'html'])
    webbrowser.open("file://" + os.getcwd() + "/htmlcov/index.html", new=2)

if __name__ == '__main__':
    main()
...