Как правильно в 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()

Тест пройден, но дал ошибку, хотя быть ее не должно. Отчего так?


Ответы (0 шт):