Чудя се дали има начин да се зададе повече от 1 тестов файл, който да се изпълнява, когато се използва конфигурация на покритие на Python (.coveragerc
) файл. Ако не е от конфигурационния файл, може би е възможно при стартиране от командния ред? Понастоящем за три различни файла на тестовите единици използвам:
coverage run test1
coverage run -a test2
coverage run -a test3
Може ли да е по-кратък? Благодаря
Отговори:
1 за отговор № 1Редактиране (2017-09-25): Както посочва @ ned-batchelder в коментарите, предпочитайте pytest над нос ако стартирате нов проект, тъй като носът не се поддържа.
Като погледнем Документация за покритие, изглежда, че това е единственият режим, който coverage
поддържа изпълнява специфичен модул с всяка команда.
Можете да използвате тестова рамка, като нос pytest, за да стартирате всичките си тестове и да докладвате процента успех / неуспех и общото покритие.
1) Инсталирайте pytest, покритие и pytest-cov
pip install pytest
pip install coverage
pip install pytest-cov
2) Стартирайте pytest
commmand, използвайки --cov
флаг за всеки модул или пакет, чието покритие трябва да се измери. Например:
pytest --cov=foo --cov=bar
Изходен изход:
Name Stmts Miss Cover Missing
--------------------------------------
bar.py 3 1 67% 5
foo.py 6 2 67% 9-11
--------------------------------------
TOTAL 9 3 67%
pytest
ще намерите вашите тестове, ако съответстват на модела test_*.py
(или други, повече информация тук).
Открийте общото използване на кода nose
1) Инсталирайте носа и покритието
pip install nose
pip install coverage
2) Стартирайте nosetests
команда, с --with-coverage
флаг
nosetests --with-coverage
Примерни изходни данни (когато има един модул foo.py):
Name Stmts Miss Cover
----------------------------
foo.py 6 2 67%
----------------------------------------------------------------------
Ran 1 test in 0.008s
OK
nosetests
можете автоматично да намерите вашите тестове, използвайки някои евристики. Например, ако поставите тестовете си в имената на файловете, които започват с test
и създайте вашите тестове чрез наследяване от unittest.TestCase
, nosetests
ще ги намери. Повече информация тук.
</ И>