首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django模型以外的django数据库测试

问django模型以外的django数据库测试
EN

Stack Overflow用户
提问于 2017-08-21 05:28:40
回答 1查看 149关注 0票数 0

我正在使用mysql-server和MySQLdb访问我的数据库。我甚至没有使用django模型访问数据库表。

现在,这个问题出现在测试中。所有django文档都在讨论使用django模型进行测试。在测试数据时,我必须使用cursor.execute()函数将数据插入数据库,然后必须从中读取数据。但这浪费了我的时间。

另外,TestCase类在事务中运行所有数据库查询,我的疑问是,对于mysql服务器和myqldb,这将是一样的吗?

我使用MySQLdb,因为它比django模型更快。有人能告诉我如何使测试更简单吗?如何在django中测试数据库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-21 11:15:46

与重写setUp和tearDown方法相比,为TestCase设置数据库的一个更好的方法是通过实现setUpTestData来避开Django。

代码语言:javascript
复制
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

代码语言:javascript
复制
@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。

参考文献

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45789849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档