[英]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.