Предположим, мы установили огромную библиотеку, такую как SageMath . Давайте рассмотрим тривиальный тестовый файл:
from sage.all_cmdline import * # import sage library
class TestClass:
def test_method(self):
assert True
Он работает около 1,5 сек c с Nosetest
$ time nosetests test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
nosetests test.py 1.38s user 0.14s system 97% cpu 1.567 total
Принимая во внимание pytest он работает ~ 4.5 se c!
platform linux -- Python 3.8.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: /home/user/pytest, inifile: pytest.ini
plugins: profiling-1.7.0
collecting 1 item
/usr/lib/python3.8/site-packages/sage/misc/sage_unittest.py:20:
PytestCollectionWarning: cannot collect test class 'TestSuite' because it has a __init__ constructor (from: test.py)
class TestSuite(object):
collected 1 item
test.py . [100%]
====================================================================== 1 passed in 3.26s ======================================================================
pytest test.py 3.86s user 0.46s system 101% cpu 4.253 total
Похоже (согласно предупреждению), что pytest собирает некоторые тесты из самой библиотеки или может быть чем-то другим.
Вопрос является: как ускорить запуск Pytest в таких случаях с огромной библиотекой для загрузки? И как избежать загрузки тестов из этой огромной библиотеки?
PS. См. Подробное обсуждение по теме: https://github.com/pytest-dev/pytest/issues/7111