我试图通过模拟 sql 连接来模拟 unittest 模拟中 get_count 函数返回的值。但我得到了这个错误。
AssertionError: 12939 != <MagicMock name='mock.cursor().fetchone()。getitem ()' id='1053090478792'
应用程序.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))
test_count.py
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'])
这是我的代码任何人都可以帮助我