Я использую pytest с pytest-xdist для параллельного тестирования. Похоже, что он не соблюдает опцию -s
для прохождения через стандартный вывод на терминал по мере запуска тестов. Есть ли способ сделать это возможным? Я понимаю, что это может привести к тому, что выходные данные из разных процессов будут перемешаны в терминале, но я в порядке с этим.pytest + xdist без захвата вывода?
ответ
Я использовал последовавшей код:
# conftest.py
import _pytest.capture
def get_capman(plugin_manager):
capman_list = filter(lambda p: isinstance(p, _pytest.capture.CaptureManager), plugin_manager._plugins)
return capman_list[0] if len(capman_list) == 1 else None
def get_xdist_slave(plugin_manager):
# TODO: have no idea how to check isinstance "__channelexec__.SlaveInteractor"
slave_list = filter(lambda p: hasattr(p, 'slaveid'), plugin_manager._plugins)
return slave_list[0] if len(slave_list) == 1 else None
def is_remote_xdist_session(plugin_manager):
return get_xdist_slave(plugin_manager) is not None
def pytest_configure(config):
if is_remote_xdist_session(config.pluginmanager) and get_capman(config.pluginmanager) is not None:
capman = get_capman(config.pluginmanager)
capman._method = "no"
capman.reset_capturings()
capman.init_capturings()
Вставьте его conftest.py
Главное, чтобы быть уверенным, что удаленный сеанс, и мы должны перенастроить экземпляр CaptureManager. Там одна нерешенная проблема заключается в том, как проверить, что удаленный объект имеет тип «__channelexec__.SlaveInteractor
».
Хм, похоже, это не работает для меня. У меня есть инструкции 'print' в моих установках, которые определенно выполняются, но я не вижу их результатов в тестовом прогоне. –
Я нашел обходное решение, хотя и не полное решение. При перенаправлении stdout на stderr выводится вывод операторов печати. Это может быть выполнено с помощью одной строки кода Python:
sys.stdout = sys.stderr
При размещении в conftest.py применяется ко всем испытаниям.
- 1. Pytest не распознает параметр -n после установки pytest-xdist
- 2. Может ли pytest xdist записывать журнал в ту же конфигурацию?
- 3. pytest configure upfront перед запуском параллельно с xdist
- 4. Как распечатать вывод при использовании pytest с xdist
- 5. Попытка понять ошибки pytest-xdist для параметризованных тестов
- 6. Как запустить настройку в каждом процессе pytest-xdist
- 7. Настройка удаленной среды при использовании xdist
- 8. захвата вывода CMD
- 9. py.test с xdist не выполняет тесты, параметризованные со случайными значениями
- 10. Управление распределением тестов с помощью py.test xdist
- 11. pytest capsys: проверка вывода И получение сообщения?
- 12. pytest-xdist IOError: не может отправить <Channel ID = 1 закрыт>
- 13. py.test с xdist пропуская все тесты с -n> 1
- 14. Без захвата клавиатуры без заголовка
- 15. Плагины pytest работают с python2.6
- 16. Вызов python из вывода оболочки и захвата
- 17. Capistrano захвата 3.x вывода построчно
- 18. Использовать ProcessBuilder для захвата вывода отдельного пакета
- 19. питон скрипт для захвата вывода команды топ
- 20. Вывод записи захвата вывода сценария запуска
- 21. Сжатый способ захвата вывода процесса в Java
- 22. pytest «Без модуля с именем» error
- 23. выполнить несколько раз тест с pytest
- 24. Копирование вывода без буферизации вывода
- 25. Запись функции pytest для проверки вывода в файл в python?
- 26. Ячейка захвата прессована без didSelectRowAtIndexPath
- 27. регулярные выражения группы без захвата
- 28. Заменить игнорирует группу без захвата
- 29. RegEx вопрос группа без захвата
- 30. Как сопрягать без захвата группы
Здесь есть открытая проблема: https://github.com/pytest-dev/pytest/issues/680 –
woohoo, pytest xdist теперь отличает опцию '-s'! См. Выше выпуск. –