问题很简单,答案我不知道......
我是新手测试,我在测试类驱动sql3数据库时遇到问题。测试这样一个类的最佳方法是什么?测试类或测试 init 功能不是问题,而是其他问题?测试插入测试行?
import sqlite3
class DataBase:
def __init__(self):
self._database_path = 'data.sql'
self._conn = sqlite3.connect(self._database_path)
self._cursor = self._conn.cursor()
def get(self, sql):
# select
self._cursor.execute(sql)
dataset = []
for row in self._cursor:
dataset.append(row)
return dataset
def post(self, sql):
# insert
self._cursor.execute(sql)
self._conn.commit()
谢谢你们所有人,谢谢你们的所有答案!!
答案 0 :(得分:0)
您可以使用数据库的回滚功能。
只需将self._conn.commit()
替换为self._conn.rollback()
,您就可以测试sql的有效性而不会对数据产生任何影响。
如果您需要测试一系列操作(即:获取数据 - >修改数据 - >插入新数据 - >删除某些数据 - >再次获取数据),您可以删除所有{{1}在您的代码中,运行测试并最终调用_conn.commit()
。
示例:
_conn.rollback()
答案 1 :(得分:0)
我认为官方sqlite3测试中的CursorTests
就是一个很好的例子。
https://github.com/python/cpython/blob/master/Lib/sqlite3/test/dbapi.py#L187
您可以编写setUp
和tearDown
方法来设置和回滚数据库。
from unittest import TestCase
class TestDataBase(TestCase):
def setUp(self):
self.db = DataBase()
def test_get(self):
pass # your code here
def test_post(self):
pass # your code here