#python-3.x
#python-3.x
Вопрос:
Итак, у меня есть некоторый код, который, похоже, специфичен для живых и тестовых сред. Чтобы обойти живые наборы данных в средах, я собирался вставить условный блок.
Обычно я могу запустить приложение с python3 app
помощью или python3 -m app
, но если я хочу запустить его, например, с помощью pytest: python3 -m pytest
я хочу иметь возможность различать, используется ли pytest или нет.
Я думал, что из свойства может быть какая-то информация __name__
, но при ссылке на него он не показывал мне ничего, связанного с pytest, а вместо этого в другом месте. Я что-то упустил? Есть ли другое ключевое слово, которое я должен использовать для проверки?
sys
я не думаю, что модуль обязательно справился бы с задачей, если бы он просто проверял argv на предмет чего-то конкретного, поскольку часть меня думает, что: 'pytest' in sys.argv
кажется немного хакерским, но я думаю, выполнимо. Я просто подумал, что есть лучший способ определить, запускал ли я pytest или нет
Ответ №1:
Я не обязательно уверен, что это лучший ответ, но, используя sys
импорт, вы можете взглянуть на импортированные модули. Таким образом, вы можете увидеть, является ли pytest одним из этих модулей.
Итак, вместо того, чтобы смотреть на системные аргументы, вы, вероятно, могли бы взглянуть на модули, запущенные в данный момент времени:
if 'pytest' in sys.modules:
pass
Может позволить вам увидеть, загружен ли он в память.