簡體   English   中英

在Django模型以外的Django中測試數據庫

[英]Testing database in django other than django models

我正在使用mysql-server和MySQLdb訪問我的數據庫。 我什至沒有使用django模型來訪問數據庫表。

現在問題出在測試時。 django的所有文檔都在談論使用django模型的測試。 在測試數據時,我必須使用cursor.execute()函數將數據插入數據庫,然后從中讀取數據。 但這浪費了我的時間。

另外TestCase類在事務中運行所有數據庫查詢,我的疑問是,這對於mysql-server和myqldb是否相同?

我正在使用MySQLdb,因為它比Django模型更快。 誰能告訴我如何簡化測試? 如何在Django中測試數據庫?

與重寫TestCase setUptearDown方法相比,一種更好的數據庫設置方法是改為通過實現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提供自己的setUptearDown

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM