私は、データベースを嘲笑して、次のメソッドをテストするためのユニットテストケースを作成しようとしています。どのように実際のデータベースサーバーに実際に接続せずにデータベース接続を模擬する。私はサンプルのテストケースで試してみました。それが正しいのかどうかはわかりません。私が間違っていれば私を修正してください。Pythonでデータベース接続pymysqlを単体テストする方法は?
//MySQL.py
class MySQL():
retry_interval = 20000
def link(self, server,port):
try:
return pymysql.connect(server, username='name', passwd='pwd', db='demo', int(port))
sys.stdout.write('Connected to database at {}:{}\n'.format(server,port))
except:
sys.stderr.write('Retry database connection in {} ms...\n'.format(self.retry_interval))
sleep(self.retry_interval/1000.0)
continue
//test.py
from unittest.mock import Mock, MagicMock
from unittest.mock import patch
import MySQL
@patch('MySQL.pymysql')
def testLink(self, mysql_mock):
mock_cursor = Mock.MagicMock()
mysql_mock.connect.return_value.cursor.return_value.__enter__.return_value = mock_cursor
限界をどこ*あなた*のエッジコードに達する。あなたの場合、 'pymysql.connect'はunittestの範囲外であり、嘲笑されるべきです。モックが正しく呼び出されているかどうかテストする必要があります。 @KlausD。 –
大丈夫ありがとう。お試しください – Mythri