Pruebas con bases de datos
Finalmente, probemos un código que interactúa con una base de datos. Para este ejemplo, usaremos SQLite y el módulo sqlite3.
En my_code.py, cree una función llamada create_table que cree una nueva tabla en una base de datos 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()
En este código, creamos una nueva tabla de base de datos SQLite llamada "my_table" con dos columnas: "id" y "name". Luego definimos una clase de prueba llamada TestCreateTable con un método setUp que crea una base de datos SQLite para las pruebas.
Ahora escribamos una prueba para la función create_table. Primero, necesitamos crear una nueva base de datos para las pruebas. Lo haremos en un método de configuración que se ejecuta antes de cada prueba.
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)
En el método setUp, creamos una nueva base de datos SQLite.
En el método test_create_table, llamamos a la función create_table y luego comprobamos que la tabla se creó usando una consulta SQL.
Ahora podemos ejecutar nuestras pruebas nuevamente:
python -m unittest test_my_code.py
Si la prueba pasa, debería ver una salida como la siguiente:
...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
Los ... indican que tres pruebas pasaron.