如何解决在 python unittest 中模拟数据库
我试图通过模拟 sql 连接来模拟 unittest 模拟中 get_count 函数返回的值。但是我遇到了这个错误。
断言错误:12939 != app.py test_count.py 这是我的代码,任何人都可以帮助我import pyodbc
try:
def get_count(conn):
cursor = conn.cursor()
cursor.execute('SELECT COUNT(ID) FROM mydb.dbo.Company')
count = cursor.fetchone()[0]
return count
except pyodbc.Error as e:
print(e)
if __name__ == '__main__':
server = 'xx.x.xx.xxx'
database = 'mydb'
username = 'user1'
password = '12424124'
conn = pyodbc.connect('DRIVER={ODBC Driver 11 for sql Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = conn.cursor()
print(get_count(conn))
import unittest
from unittest import mock
from app import get_count
class Test_count(unittest.TestCase):
def fix_dbc(self):
dbc = mock.Magicmock(spec=['cursor'])
return dbc
def fix_count(self):
count = 12939
return count
def test_get_count_method(self):
dbc = self.fix_dbc()
count = self.fix_count()
self.assertEqual(count,get_count(dbc))
if __name__ == '__main__':
unittest.main(argv=['','-v'])
解决方法
您在模拟初始化过程中离开了:"eslintConfig": {
"extends": "react-app","rules": {
"no-unused-vars": "off"
}
},
是您提供给 dbc
的魔法模拟。所以你会在 get_count
上调用其他方法后得到 dbc.cursor().fetchone()[0]
。
您必须配置您的模拟以返回适当的值:
dbc.cursor()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。