模拟DB python

时间:2012-11-20 09:58:02

标签: python mocking

是否有一个简单的模拟示例来测试python中的连接数据库?我在谷歌找到了很多例子,但我很困惑。我想测试连接数据库并执行查询,以理解概念,例如游标。

谢谢

4 个答案:

答案 0 :(得分:2)

如果您想了解这些概念,我认为嘲笑并不是最适合您的解决方案。

我建议实际设置一个简单的数据库,例如,SQLite3,创建一些表,通过Python连接它,并做一些测试。

为了能够模拟某些东西,你需要知道你正在嘲笑的对象有什么样的行为,如果你想了解它是如何工作的,那么你最好的答案是实际尝试。

Sqlite3内置于最新版本的Python中,因此您可以通过打开python shell并输入import sqlite3来测试它。

查看本教程,了解有关可以执行的操作的一些提示:

http://zetcode.com/db/sqlitepythontutorial/

答案 1 :(得分:1)

我会像pcalcao说的那样建议你玩一个数据库。 Sqlite3将立即启动并运行。 sqlite3模块最近在python中实现。以下是来自http://docs.python.org/2/library/sqlite3.html

的官方文档的(稍加修改)示例
import sqlite3

# You can change example.db to :memory: below if you don't want to save to 
# file. But be aware that the data is (obviously) lost after the program has
# terminated.
conn = sqlite3.connect('example.db')  

c = conn.cursor()

# Create table
c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')

# Insert a row of data
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# Save (commit) the changes
conn.commit()

# Merged from another sample on the same page
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
print c.fetchone()

# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
conn.close()

答案 2 :(得分:0)

像其他人一样,你应该在SQLite上设置数据库并立即测试它。

但是如果你需要一些带有模拟的测试套件,你可以使用mockito包。它易于使用。只需模拟一些对象,记录行为并检查它是否正常。

答案 3 :(得分:0)

如果你想要嘲笑,可能会在你看到unittest时查看它。它适用于sqlite3。

您可以创建一个数据库连接正常工作的环境,但是所做的任何更改都不会持续。使用 setUp  创建测试依赖的环境的方法。 创建与内存中的新数据库连接很容易 - 只有数据库,并用所需的表和行填充该数据库。

tearDown 方法来撤消setUp方法所做的任何事情,以便 每个测试都可以在未受影响的环境版本中运行。自数据库 只在内存中,你需要做的只是关闭连接。