Testando com Bancos de Dados
Finalmente, vamos testar algum código que interage com um banco de dados. Para este exemplo, usaremos SQLite e o módulo sqlite3.
Em my_code.py, crie uma função chamada create_table que cria uma nova tabela em um banco de dados SQLite.
import sqlite3
def create_table():
conn = sqlite3.connect('my_database.db')
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS my_table (id INTEGER PRIMARY KEY, name TEXT)')
conn.commit()
conn.close()
Neste código, criamos uma nova tabela de banco de dados SQLite chamada "my_table" com duas colunas: "id" e "name". Em seguida, definimos uma classe de teste chamada TestCreateTable com um método setUp que cria um banco de dados SQLite para teste.
Agora, vamos escrever um teste para a função create_table. Primeiro, precisamos criar um novo banco de dados para teste. Faremos isso em um método de configuração que é executado antes de cada teste.
class TestCreateTable(unittest.TestCase):
def setUp(self):
self.conn = sqlite3.connect('my_database.db')
def test_create_table(self):
create_table()
c = self.conn.cursor()
c.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='my_table'")
result = c.fetchone()
self.assertIsNotNone(result)
No método setUp, criamos um novo banco de dados SQLite.
No método test_create_table, chamamos a função create_table e, em seguida, verificamos se a tabela foi criada usando uma consulta SQL.
Agora podemos executar nossos testes novamente:
python -m unittest test_my_code.py
Se o teste passar, você deverá ver uma saída como a seguinte:
...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
O ... indica que três testes passaram.