gpt4 book ai didi

python - 在 django 中测试数据库而不是 django 模型

转载 作者:行者123 更新时间:2023-11-29 10:39:27 26 4
gpt4 key购买 nike

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

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

TestCase 类也在事务中运行所有数据库查询,我的疑问是,这对于 mysql-server 和 myqldb 来说是相同的吗?

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

最佳答案

比覆盖 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 中没有配置条目的情况对于您的数据库,您需要提供自己的 setUptearDown为您TestCase

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

引用文献

关于python - 在 django 中测试数据库而不是 django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45789849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com