Как ускорить запуск Pytest (который слишком медленный) при загрузке огромной библиотеки - PullRequest
0 голосов
/ 23 апреля 2020

Предположим, мы установили огромную библиотеку, такую ​​как 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

...