我正在使用mysql-server和MySQLdb访问我的数据库。我甚至没有使用django模型访问数据库表。
现在,这个问题出现在测试中。所有django文档都在讨论使用django模型进行测试。在测试数据时,我必须使用cursor.execute()函数将数据插入数据库,然后必须从中读取数据。但这浪费了我的时间。
另外,TestCase类在事务中运行所有数据库查询,我的疑问是,对于mysql服务器和myqldb,这将是一样的吗?
我使用MySQLdb,因为它比django模型更快。有人能告诉我如何使测试更简单吗?如何在django中测试数据库?
发布于 2017-08-21 11:15:46
与重写setUp和tearDown方法相比,为TestCase设置数据库的一个更好的方法是通过实现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。
参考文献
https://stackoverflow.com/questions/45789849
复制相似问题