2016-03-09 3 views
0

Ниже приведен порядок настройки программы. У меня есть пользовательский интерфейс, который (естественно) ждет ввода пользователя.Python Unittest запускает основную функцию

root = Tk() 
root.title("This space intentionally left blank") 
mainFrame = Frame(root) 
mainFrame.grid(column=1, row=2) 
sideFrame=Frame(root) 
sideFrame.grid(column=2, row=2) 
topLabelFrame=Frame(root) 
topLabelFrame.grid(column=1, row=1, columnspan=99) 
main() 
root.mainloop() 

Это мой блок тест:

from unittest import TestCase 
from AL2.AutoLinker2_0 import InputProcessor 


    class TestInputProcessor(TestCase): 

     def test_tokenize(self): 
      IP = InputProcessor("") 
      self.assertEqual(IP.tokenize("elbow mac"), ["elbow", "mac"]) 

Когда я бегу, мой UI всплывает и вешает модульных тестов, пока я не закрою интерфейс. Я новичок в модульном тестировании, но я понимаю, что единичный тест должен тестировать только класс и не нужно запускать всю программу. Разве это я не понимаю, или это может быть проблема с IDE (pycharm), или моя программа настроена неправильно? Спасибо!

+2

Если у вас нет кода в формате модуля и вы импортируете его в тестовом модуле, она будет работать код GUI. Убедитесь, что вы используете if __name__ == "__main__" условный – Tanner

+0

Tanner, я бы хотел, чтобы вы опубликовали это как ответ, чтобы я мог его принять. – boristhescot

ответ

2

При импорте файла Python в качестве модуля любой код в глобальном области будет выполнен после разбора файла. Это также относится к любому коду внутри класса.

Чтобы разрешить файл, чтобы быть как импортного, так и отозваны, вам нужно использовать:

#!/usr/bin/python3 
x = 1 
y = 3 

if "__name__" == "__main__": 
    print(x+y) 

__name__ всегда содержит имя текущего модуля, за исключением того, когда модуль выполняется, в данном случае, это будет иметь название «__main__»

Для получения дополнительной информации см: http://effbot.org/pyfaq/tutor-what-is-if-name-main-for.htm или https://www.ibiblio.org/swaroopch/byteofpython/read/module-name.html

Смежные вопросы