[英]Testing database in django other than django models
我正在使用mysql-server和MySQLdb訪問我的數據庫。 我什至沒有使用django模型來訪問數據庫表。
現在問題出在測試時。 django的所有文檔都在談論使用django模型的測試。 在測試數據時,我必須使用cursor.execute()
函數將數據插入數據庫,然后從中讀取數據。 但這浪費了我的時間。
另外TestCase類在事務中運行所有數據庫查詢,我的疑問是,這對於mysql-server和myqldb是否相同?
我正在使用MySQLdb,因為它比Django模型更快。 誰能告訴我如何簡化測試? 如何在Django中測試數據庫?
與重寫TestCase
setUp
和tearDown
方法相比,一種更好的數據庫設置方法是改為通過實現setUpTestData
擺脫Django的方式。
from django.db import connections
class BasicTest(TestCase):
@classmethod
def setUpTestData(cls):
alias = 'default'
cursor = connections[alias].cursor()
query = 'your query here'
cursor.execute(query)
Django會將測試數據庫放置在tearDownClass
。
如果您在settings.py
中沒有數據庫的配置條目,則需要為TestCase
提供自己的setUp
和tearDown
@classmethod
def setUpClass(cls):
super(BasicTest, self).setUpClass()
db = MySQLdb.connect(host="localhost",user="root",passwd="toor")
cls.cursor = db.cursor()
query = 'CREATE DATABASE IF NOT EXISTS test;'
cls.cursor.execute(query)
query = 'USE test;'
cls.cursor.execute(query)
@classmethod
def tearDownClass(cls):
query = 'DROP DATABASE test;'
cls.cursor.execute(query)
cls.cursor.close()
這樣,您仍然可以在setUpTestData
執行其他數據操作,但是此處將使用的光標是cls.cursor
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.