Почему pytest просит указать --tx

После нескольких успешных тестов pytest внезапно выдает эту ошибку:

$ pytest -vvv -x --internal --oclint -n -32
============================= test session starts ==============================
platform darwin -- Python 3.7.7, pytest-5.4.1, py-1.7.0, pluggy-0.13.1 -- /usr/local/opt/python/bin/python3.7
cachedir: .pytest_cache
rootdir: /Users/pre-commit-hooks/code/pre-commit-hooks, inifile: pytest.ini
plugins: xdist-1.31.0, forked-1.1.3
ERROR: MISSING test execution (tx) nodes: please specify --tx

Это мой pytest.ini:

[pytest]
markers =
    oclint: marks tests as slow (deselect with '-m "not slow"')
    internal: marks tests as checking internal components. Use this if you are developing hooks

-n #взят из pytest-xdist, который является дополнением к pytest. Для меня это было странно, потому что pytest на сборке travis linux работал нормально до последней итерации.

Вопрос

Почему pytest просит меня добавить --tx для моих тестов?

3 ответа

Решение

Если вы нажмете жирным пальцем тире после числа -n, например -n -32, pytest будет жаловаться на отсутствие --txвариант. Другими словами, число после -n не может быть отрицательным, и вместо этого вы хотите использовать-n 32.

--tx обычно используется для вызова подпроцесса Python2.7:

pytest -d --tx popen//python=python2.7

Подробнее об использовании --tx как часть pytest можно найти в pytest-xdist [документация по этому флагу](pytest -d --tx popen//python=python2.7).

Я получил то же самое pytest-xdistошибка, но по другой причине. Я установил --forked --dist=loadfile но не уточнил --numprocesses. Установка этой опции устранила ошибку.

Просто к вашему сведению: аналогичная ошибка может произойти, если указать, например,dist=loadfileбез указания-n 32.

Другие вопросы по тегам