Как правильно в unittest проверить, что ответ метода не пустой?
Написал приложение - простая игра, где пользователь пишет свой вопрос и получает один из ответов, которые случайно достаются из списка. Теперь надо сделать тест, который бы проверял функцию случайных ответов: мы сравниваем ее ответ и делаем вывод о том, пустой он или нет (важно проверить: ответ не пуст).
С тестированием не сталкивался, даже с простой его версией. Что у меня не так?
import random
import tkinter as tk
RESPONSES = ['Да', 'Нет']
class QuestionsAnswers(tk.Frame):
def __init__(self, main):
tk.Frame.__init__(self, main)
self.main = main
# создадим рамку, где будет поле для вопросов пользователя
self.frame_question_answer = tk.Frame(master=self.main)
# создадим рамку, которая формирует область с ответами на вопросы пользователя
self.frame_answer = tk.Frame(master=self.main)
# добавим виджет Text - область для написания вопросов
self.text_box_question = tk.Text(self.frame_question_answer)
# виджет для вывода случайных ответов
self.text_box_answer = tk.Text(master=self.frame_answer)
# создадим элемент кнопки Спросить
self.button_ask = tk.Button(master=self.frame_question_answer,
text='Спросить')
# создадим элемент кнопки Очистить
self.button_clear = tk.Button(master=self.frame_question_answer,
text='Очистить')
# привяжем все виджеты к сетке
self.frame_question_answer.grid(row=0, column=0, columnspan=1, sticky='e')
self.frame_answer.grid(row=0, column=1, columnspan = 1,sticky='w')
self.text_box_question.grid(row=0, column=0, sticky='news')
self.text_box_answer.grid(row=0, column=0, sticky='news')
self.button_ask.grid(row=3, column=0, sticky='ew')
self.button_clear.grid(row=3, column=1, sticky='ew')
# привязываем к кнопке обработку события
self.button_ask.bind('<Button>', self.questionQuery)
# привязываем команду к кнопке очистки полей вопроса и ответа
self.button_clear.bind('<Button>', self.clearText)
# Обработчик вопроса пользователя
def questionQuery(self, event):
question = self.text_box_question.get('1.0', tk.END) # читаем текст из виджета
self.main.update_idletasks()
self.main.after(2000, lambda: self.button_ask.configure(text='Спросить'))
if not question.strip():
self.text_box_answer.insert(tk.END, 'Задайте свой вопрос\n')
else:
self.answerQuery()
# Функция возврата случайных ответов
def answerQuery(self):
time.sleep(2)
self.text_box_answer.insert(tk.END, 'Хмм...' + '\n') # выводим в виджет
self.main.update_idletasks()
time.sleep(2)
self.text_box_answer.insert(tk.END, 'Я заглядываю за повороты судьбы' + '\n')
self.main.update_idletasks()
self.main.after(2000, lambda: self.text_box_answer.insert(tk.END, random.choice(RESPONSES) + '\n'))
# функция очистки полей вопроса и ответа
def clearText(self, event):
time.sleep(1)
self.text_box_question.delete('1.0','end')
time.sleep(1)
self.text_box_answer.delete('1.0', tk.END)
if __name__ == '__main__':
window = tk.Tk()
quest_answer = QuestionsAnswers(window)
window.update()
window.mainloop()
Далее пишу код теста:
import unittest
class TKinterTestCase(unittest.TestCase):
def setUp(self):
self.questionsAnswers = QuestionsAnswers()
def test_answerQuery(self):
self.assertEqual(self.questionsAnswers.answerQuery(), len(self.questionsAnswers.answerQuery())!=0)
if __name__ == '__main__':
unittest.main()
Тест пройден, но дал ошибку, хотя быть ее не должно. Отчего так?