Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan konfigurálhatja a Django tesztelési keretrendszerét úgy, hogy SQL Server adatbázisokkal működjön a mssql-django háttérrendszer használatával.
Hogyan működik a Django tesztelése az SQL Serverrel
A futtatáskor python manage.py testa Django létrehoz egy külön tesztadatbázist, futtatja az összes tesztet, majd megsemmisíti a tesztadatbázist. A tesztadatbázis neve alapértelmezés szerint a test_ és az Ön által beállított adatbázisnév kombinációja.
Tesztadatbázis beállításainak konfigurálása
A tesztadatbázis testreszabása az TEST adatbázis-konfiguráció szótárával:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
"TEST": {
"NAME": "test_mydb",
"COLLATION": "SQL_Latin1_General_CP1_CI_AS",
},
},
}
TESZTbeállítások
| Setting | Leírás |
|---|---|
NAME |
A tesztadatbázis neve. Alapértelmezett: "test_" + NAME. |
COLLATION |
A tesztadatbázis rendezési sorrendje. Alapértelmezett: példány alapértelmezett rendezési sorrendje. |
DEPENDENCIES |
Létrehozási sorrend függőségei több adatbázis használatakor. |
MIRROR |
Egy adatbázis aliasa, amelyet ennek a tesztadatbázisnak tükröznie kell. |
Tesztek futtatása
Futtassa a teljes tesztcsomagot:
python manage.py test
Teszteket futtathat egy adott alkalmazáshoz:
python manage.py test myapp
Egy adott tesztosztály vagy metódus futtatása:
python manage.py test myapp.tests.ProductTestCase.test_create_product
A tesztadatbázis megőrzése
A tesztadatbázis tesztfuttatások közötti megőrzéséhez használja a(z) --keepdb elemet. Ez a megközelítés felgyorsítja az ismétlődő tesztfuttatásokat az adatbázis-létrehozás és -megsemmisítés kihagyásával:
python manage.py test --keepdb
Note
A --keepdb jelölőre a felügyelt identitásalapú hitelesítés (ActiveDirectoryMsi) használatakor van szükség, mert a tesztfuttató nem tud adatbázisokat létrehozni ezzel a hitelesítési módszerrel.
Tranzakciók izolációja a tesztekben
A Django TestCase osztálya minden tesztet egy tranzakcióba foglal, majd a teszt befejezése után visszagörgeti azt. Ez a viselkedés tesztelkülönítést biztosít anélkül, hogy táblákat hoz létre és semmisít meg minden teszthez.
A tranzakciók véglegesítéséhez (például tranzakcióval kapcsolatos viselkedés teszteléséhez) szükséges tesztekhez használja a következőt TransactionTestCase:
from django.test import TransactionTestCase
from myapp.models import Product
class ProductTransactionTest(TransactionTestCase):
def test_atomic_operation(self):
# This test commits to the database
Product.objects.create(name="Widget", price=9.99)
self.assertEqual(Product.objects.count(), 1)
Tip
Ha lehetséges, használja TestCase (nem TransactionTestCase)
TestCase gyorsabb, mert a táblák csonkolása helyett tranzakció-visszagörgetést használ.
Tesztelés több adatbázissal
Ha a projekt több adatbázist használ, konfigurálja a tesztelési függőségeket:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<primary-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
"TEST": {
"NAME": "test_primary",
},
},
"reporting": {
"ENGINE": "mssql",
"NAME": "<reporting-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
"TEST": {
"NAME": "test_reporting",
"DEPENDENCIES": ["default"],
},
},
}