Beispiel: SQLite-Datenbank testen

  1. Zum Testen, ob die Datenbank library.db mit create_db.py angelegt wurde, importieren wir neben sqlite3 und unittest auch noch create_db.py und os:

    1import os
    2import sqlite3
    3import unittest
    4
    5import create_db
    
  2. Anschließend definieren wir zunächst eine Testklasse TestCreateDB:

    8class TestCreateDB(unittest.TestCase):
    
  3. In ihr definieren wir dann die Testmethode test_db_exists, in der wir mit assert die Annahme treffen, dass die Datei in os.path existiert:

     9    def test_db_exists(self):
    10        assert os.path.exists("library.db")
    
  4. Nun überprüfen wir auch noch, ob die Tabelle books angelegt wurde. Hierfür versuchen wir, die Tabelle erneut anzulegen und erwarten mit assertRaises, dass sqlite mit einem OperationalError beendet wird:

    12    def test_table_exists(self):
    13        with self.assertRaises(sqlite3.OperationalError):
    14            create_db.cursor.execute("CREATE TABLE books(title text)")
    
  5. Weitere Tests wollen wir nicht an einer Datenbank im Dateisystem durchführen sondern in einer SQLite-Datenbank im Arbeitsspeicher:

    17class TestCommands(unittest.TestCase):
    18    def setUp(self):
    19        self.conn = sqlite3.connect(":memory:")
    20        self.cursor = self.conn.cursor()
    

Siehe auch

Weitere Beispiele zum Testen eurer SQLite-Datenbankfunktionen findet ihr in der SQLite Testsuite test_sqlite3.