Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara mengonfigurasi kerangka kerja pengujian Django untuk bekerja dengan database SQL Server menggunakan mssql-django backend.
Cara kerja pengujian Django dengan SQL Server
Saat Anda menjalankan python manage.py test, Django membuat database pengujian terpisah, menjalankan semua pengujian, lalu menghancurkan database pengujian. Nama database pengujian secara default adalah test_ yang diikuti oleh nama database yang Anda konfigurasi.
Konfigurasikan pengaturan basis data uji
Sesuaikan basis data pengujian menggunakan kamus TEST dalam konfigurasi basis data Anda:
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",
},
},
}
Pengaturan UJI
| Pengaturan | Deskripsi |
|---|---|
NAME |
Nama basis data pengujian. Standar: "test_" + NAME. |
COLLATION |
Kolasi untuk basis data pengujian. Default: kolasi bawaan instans. |
DEPENDENCIES |
Dependensi urutan pembuatan saat menggunakan beberapa database. |
MIRROR |
Alias dari database yang harus dicerminkan oleh database pengujian ini. |
Jalankan pengujian
Jalankan rangkaian pengujian lengkap:
python manage.py test
Jalankan pengujian untuk aplikasi tertentu:
python manage.py test myapp
Jalankan kelas atau metode pengujian tertentu:
python manage.py test myapp.tests.ProductTestCase.test_create_product
Pertahankan database pengujian
Gunakan --keepdb untuk mempertahankan database pengujian di antara eksekusi pengujian. Pendekatan ini mempercepat eksekusi pengujian berulang dengan melewati pembuatan dan penghancuran database:
python manage.py test --keepdb
Note
Opsi --keepdb diperlukan saat menggunakan autentikasi identitas terkelola (ActiveDirectoryMsi), karena eksekutor pengujian tidak dapat membuat database dengan metode autentikasi ini.
Isolasi transaksi dalam pengujian
Kelas TestCase Django menjalankan setiap pengujian dalam sebuah transaksi dan membatalkan transaksi tersebut setelah pengujian selesai. Perilaku ini menyediakan isolasi pengujian tanpa membuat dan menghancurkan tabel untuk setiap pengujian.
Untuk pengujian yang perlu melakukan transaksi (misalnya, untuk menguji perilaku terkait transaksi), gunakan 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
Gunakan TestCase (tidak TransactionTestCase) jika memungkinkan.
TestCase lebih cepat karena menggunakan pembatalan transaksi alih-alih memotong tabel.
Menguji dengan beberapa database
Jika proyek Anda menggunakan beberapa database, konfigurasikan dependensi pengujian:
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"],
},
},
}