Вопрос, поставленный в названии, может быть случай the XY-Problem, но я не смог найти лучшего кратким описанием. Я хочу протестировать несколько скриптов python, запустив execfile(filename)
на каждом из них, а затем посмотрим, будут ли они инициировать утверждение/исключение. До сих пор так хорошо, но большинство из них также запустили gui для конформации с одним заявлением, скажем world.show('someString')
. Для автоматического тестирования я не хочу видеть gui. Как я могу подавить gui без изменения самих скриптов?Как подавить выполнение инструкции в скрипте с помощью execfile?
Edit: Что касается комментариев: В эссенции, я мог бы просто сделать:
import unittest
class TestExamples(unittest.TestCase):
def test_firstExample(self):
execfile('example1.py')
def test_secondExample(self):
execfile('example2.py')
# and many more
if __name__ == '__main__':
unittest.main()
Но) есть больше, чем два, и я предпочел бы не написать тестовую функцию для каждого примера , Я бы хотел, чтобы их проверяли, просто находясь в папке. Это можно было бы решить путем unittests discover
. И б), большинство из них заканчивается визуализацией расчета, как и с matplotlib.pyplot.show()
. Я хочу подавить эту визуализацию, не меняя самих примеров.
Вы должны были бы заменить GUI вызов с макетом, но если это возможно, зависит от конкретного графического интерфейса. Тем не менее, я бы реорганизовал скрипты для использования функции 'main()'. –
Что не может сделать для вас модуль unittest Python или «нос»? Тем не менее, Martijn сделал хороший вывод, что вам нужно высмеять определенные интерфейсы. –