Skip to content

Latest commit

 

History

History
72 lines (48 loc) · 2.16 KB

sem-db.md

File metadata and controls

72 lines (48 loc) · 2.16 KB

Testes Unitários sem Bando de Dados

Como executar testes unitários sem iniciar o bando de dados?

Fontes:

Para executar testes unitários sem inicializar o banco de dados e, por tanto, executar os testes de forma mais rápida precisamos sobrescrever os métodos de inicialização do banco de dados da classe DiscoverRunner (versão 1.8).

Quando executarmos os testes devemos especificar que utilizaremos o arquivo de configuração abaixo.

""" mysite/settings_noDB.py """
from django.test.runner import DiscoverRunner

class TestRunnerWithoutDB(DiscoverRunner):
  def setup_databases(self, **kwargs):
    pass

  def teardown_databases(self, old_config, **kwargs):
    pass

Vamos ver se está funcionando executando os testes no terminal, repare que não precisamos escrever um teste se quer, pois faremos isso em seguida.

cd mysite/polls/
python manage.py test polls --testrunner=mysite.settings_noDB.TestRunnerWithoutDB

E o resultado é...

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

Vou quebrar a linha de comando para entendermos melhor.

python manage.py test polls     # até aqui nada de novo
--testrunner=                   # aqui vamos dizer quem será o executor de testes (test runner)
    mysite                      # esse é nome do seu projeto
        .settgins_noDB          # esse é o nome do arquivo de configuração
        .TestRunnerWithoutDB    # esse é o nome da classe

Agora basta escrever os testes, este é um passo importante pois não utilizaremos mais a classe TestCase e sim a classe SimpleTestCase que, segundo a documentação, é um atalho para unittest. Veja exemplo...

from django.test import SimpleTestCase

class ExampleUnitTest(SimpleTestCase):
    def test_foo(self):

        # importar alguma coisa
        # from . import *

        #
        # fazer alguma coisa
        #
        def foo():
            return 1

        # testar...
        self.assertEqual(1, foo())