2

Pyodbc を使用してローカル SQL Server データベースにクエリを実行する Python の単体テストを作成するのに苦労しています。

次のコードが実行されます...

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

ただし、コードに2番目のほぼ同じテストを追加すると...

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

3 番目のテストは失敗し、次のエラー メッセージが表示されます。

Error: ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLRowCount)')

ps

注意していただきたいのは、1 つの email_sender オブジェクトを作成することから始めましたが、クエリを連続して実行できなかったため、クエリを同じものに変更し、それが機能しない場合は別の接続とカーソルを追加して、問題が発生しないようにしたことです。 re: カーソルのある位置。

4

1 に答える 1