O Módulo da Unidade de Teste da Biblioteca Padrão do Python
Há alguns problemas que devemos lidar. Primeiro, a mensagem “AssertionError” não ajuda muito, seria legal se o teste nos dissesse o que encontrou e colocasse como título no browser.
Para isso poderíamos fazer dessa maneira:
assert ‘To-Do’ in browser.title, “Título do Browser “ + browser.title
Podemos utilizar um try/finally para limpar a janela do Firefox. Mas essas organizações de problemas são testes comuns, e há algumas soluções para nossos módulos de teste unitário para nossa biblioteca. Vamos testar isso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from selenium import webdriver import unittest class NewVisitorTest(unittest.TestCase): #1 def setUp(self): #2 self.browser = webdriver.Firefox() def tearDown(self): #3 self.browser.quit() def test_can_start_a_list_and_retrieve_it_later(self): #4 #Edith ouviu falar de um novo aplicativo de tarefas online to-do app. #Ela vai checar a homepage self.browser.get('http://localhost:8000') #Ela nota que o título e cabeçalho da página menciona uma list to-do self.assertIn('To-Do', self.browser.title) #5 self.fail('Terminou o teste!') #6 #Ela é convidada a adicionar um item no to-do # [...rest of comments as before] if __name__ == '__main__': #7 unittest.main(warnings='ignore') #8 |
#1 – Testes são organizados dentro de classes, o qual herda do unittest.TestCase.
#2 – O corpo principal do teste é um método chamado test_can_start_a_list_and_retrieve_it_later. Quaisquer métodos que tenha nomes que comecem com test é um método de teste, e serão executados como testes. Você pode ter mais de um método de teste por classe. Nomes relativos ao teste é uma boa prática.
#3 – setUp e tearDown são métodos especiais os quais executa antes e depois de cada teste. Eu estou utilizando a abertura e encerramento do nosso browser, note que eles são um pouco parecidos com um try/except, o tearDown executará mesmo que ocorra um erro durante o teste. Sendo assim uma janela com erro não ficará aberta esperando você fechar.
#4 – Nós utilizamos o self.assertIn ao invés de apenas assert para nosso teste de asserção. Teste unitário fornece muitas funcionalidades como fazer testes de asserções, como assertEqual, assertTrue, assertFalse e assim por diante. Veja a documentação https://docs.python.org/3/library/unittest.html
#5 – self.fail é apenas uma mensagem de erro. Estou utilizando para mostrar a mensagem de “Terminou o teste!”.
#6 – Finalmente, nós temos o if __name__ == ‘__main__’ é assim que inicia um script. Chamamos o unittest.main(), o qual lança o unittest, o qual irá automaticamente encontrar classes de testes e métodos no arquivo e executá-lo.
#7 – warnings=’ignore’ não mostra avisos sem importância, ResourceWarning o qual apresenta no console de execução.
Se você leu a documentação do Django, você deve ter visto algo chamado LiveServerTestCase, e está pensando se devemos utilizá-lo agora. Utilizar o LiveServerTestCase é um pouco mais complicado.
Vamos executar o teste que criamos.
Melhorou um pouco. Agora a janela do Firefox fecha caso haja algum erro e no console temos mais informações do que foi testado e o erros encontrados.
Fonte: Tdd com Python: Siga o Bode dos Testes: Usando Django, Selenium e JavaScript
Deixe um comentário