Я изо всех сил пытаюсь написать модульные тесты для Python, которые используют Pyodbc для запроса локальной базы данных SQL Server.Использование pyodbc в модульных тестах
Следующий код работает ...
import pyodbc
import random
import unittest
from EmailSender import EmailSender
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.email_sender = EmailSender()
self.other_email_sender = EmailSender()
def test_for_initialisation_variables(self):
"""
Tests to check that the object is created properly
"""
self.assertTrue(self.email_sender.server)
self.assertTrue(self.email_sender.errorLogFile)
self.assertTrue(self.email_sender.connection)
self.assertTrue(self.email_sender.cursor)
self.assertTrue(self.email_sender.siteAuth)
self.assertTrue(self.email_sender.apiCallsLimitPerRun)
def test_SQL_Server_Connection(self):
for value in self.email_sender.cursor.execute("select * from sys.tables"):.
print value
Однако, когда я добавить второй, почти идентичный тест на код ...
import pyodbc
import random
import unittest
from EmailSender import EmailSender
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.email_sender = EmailSender()
self.other_email_sender = EmailSender()
def test_for_initialisation_variables(self):
"""
Tests to check that the object is created properly
"""
self.assertTrue(self.email_sender.server)
self.assertTrue(self.email_sender.errorLogFile)
self.assertTrue(self.email_sender.connection)
self.assertTrue(self.email_sender.cursor)
self.assertTrue(self.email_sender.siteAuth)
self.assertTrue(self.email_sender.apiCallsLimitPerRun)
def test_SQL_Server_Connection(self):
for value in self.email_sender.cursor.execute("select * from sys.tables"):.
print value
def test_getSites_method(self):
for value in self.other_email_sender.cursor.execute("select * from sys.tables"):.
print value
Третий тест завершается с ошибкой при слежении сообщение:
Error: ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLRowCount)')
п.с.
Просто отметим, что я начал с создания всего одного созданного объекта email_sender, но не смог выполнить обратные запросы, а затем изменил запрос на идентичность, и когда это не сработало, добавлено другое соединение и курсор, чтобы там не может быть никаких проблем: позиция с помощью курсора.