Pythonで接続データベースをテストする簡単なモック例はありますか? Googleで多くの例を見つけましたが、混乱しています。カーソルなどの概念を理解するために、接続データベースをテストしてクエリを実行したいと思います。
ありがとう
概念を理解したいのであれば、モックは最善の解決策ではないと思います。
SQLite3 などの単純なデータベースを実際にセットアップし、いくつかのテーブルを作成し、Python 経由でそれに接続し、いくつかのテストを行うことをお勧めします。
何かをモックできるようにするには、モックしているオブジェクトに期待する動作を知る必要があります。それがどのように機能するかを知りたい場合は、実際に試してみることが最善の答えです。
Sqlite3 は Python の最新バージョンに組み込まれているため、Python シェルを開いて と入力するだけでテストできますimport sqlite3
。
あなたができることのいくつかのヒントについては、このチュートリアルをチェックしてください。
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()
モッキングが必要な場合は、それを行っている間にunittestを調べることができます。sqlite3 でうまく動作します。
データベース接続が通常どおり機能する環境を作成できますが、加えられた変更は持続しません。setUpメソッドを使用し て、テストが依存する環境を作成します。インメモリのみのデータベースへの新しいデータベース接続を作成し、そのデータベースに必要なテーブルと行を入力するのは簡単です。
teaDownメソッドを使用して、setUp メソッドが行ったことをすべて元に戻すことで、各テストをそのままのバージョンの環境で実行できるようにします。データベースはメモリ内にのみあるため、接続を閉じるだけで済みます。
他の誰もが言ったように、SQLite でデータベースをセットアップし、すぐにテストする必要があります。
ただし、モックを使用したテスト スイートが必要な場合は、mockitoパッケージを使用できます。使い方は簡単です。いくつかのオブジェクトをモックし、動作を記録して、問題がないかどうかを確認してください。