我想知道如何简单地检查execute_db是否返回名为cursor.fetchone的方法调用?
我对db是否正常工作不感兴趣,这将在稍后的集成测试中完成。
我已经写了一个小的单元测试,但在这里我只是模拟返回值。我想要找到一种方法来测试具有给定名称的方法是否也被调用。
class DataChecker:
def __init__(self):
# Initialize class
self.conn = sqlite3.connect("pos.db")
self.cursor = self.conn.cursor()
def execute_db(self, query, params=None):
# Execute SQL query with parameters and return data
self.cursor.execute(query, [params])
self.conn.commit()
return self.cursor.fetchone()测试:
def test_execute_db():
mock_datachecker = Mock()
mock_datachecker.cursor.fetchone.return_value = "one"
assert DataChecker.execute_db(mock_datachecker, "SELECT * FROM Customers;", 1) == "one"发布于 2021-04-08 04:42:28
您可以模拟sqlite3中导入到DataChecker模块中的方法fetchone。
db.py
import sqlite3
class DataChecker:
def __init__(self):
# Initialize class
self.conn = sqlite3.connect("pos.db")
self.cursor = self.conn.cursor()
def execute_db(self, query, params=None):
# Execute SQL query with parameters and return data
if params:
self.cursor.execute(query, params)
else:
self.cursor.execute(query)
self.conn.commit()
return self.cursor.fetchone()然后,您可以使用db.sqlite3模拟connect().cursor().fetchone方法。
def test_execute_db():
with patch('db.sqlite3') as mock_db:
mock_db.connect().cursor().fetchone.return_value = "one"
assert DataChecker().execute_db("SELECT * FROM Customers") == "one"https://stackoverflow.com/questions/66988973
复制相似问题