Python 中的连接单元测试
Connection unit testing in Python
我是 Python 单元测试的新手,我不确定如何创建此功能的单元测试 returns 一个连接?
def connection(self):
connection = mysql.connector.connect(host='localhost',
database='test',
user='user',
password='password',
auth_plugin='mysql_native_password')
return connection
您可以模拟 mysql.connector.connect
并确保它被调用,但老实说,这可能太小 unit 无法为您的单元测试提供任何好处。这只是委托对 mysql.connector.connect
的调用,它本身应该被测试(由 mysql
包)。
class TestConnection(unittest.TestCase):
@unittest.mock('module_under_test.mysql.connector.connect')
def test_connection(self, mockconnect):
module_under_test.connection()
mockconnect.assert_called()
我想你也可以检查以确保它总是 returns something (以防止将来的修订忘记 return
出功能.
# inside test_connection as above
connection = module_under_test.connection()
self.assertIsNotNone(connection)
mockconnect.assert_called()
我最近为我创建的自定义 class 做了这个,它包装了 Python 的 Oracle MySQL 连接器。我会做类似下面的事情:
import unittest
import mysql.connector
class TestConnection(unittest.TestCase):
"""Oracle MySQL for Python Connector tests."""
connection = None
def setUp(self):
config = {
user = 'user',
password = 'password',
host = 'localhost',
database = 'test',
auth_plugin = 'mysql_native_password'
}
self.connection = mysql.connector.connect(**config)
def tearDown(self):
if self.connection is not None and self.connection.is_connected():
self.connection.close()
def test_connection(self):
self.assertTrue(self.connection.is_connected())
if __name__ == '__main__':
unittest.main()
该解决方案基于setUp()
和tearDown()
方法,分别在每个测试之前和之后执行unittest
提供的方法。这允许我们连接到数据库,运行 进行简单的连接测试,然后关闭连接。这确保了单元测试完成后没有挂起的连接。
我是 Python 单元测试的新手,我不确定如何创建此功能的单元测试 returns 一个连接?
def connection(self):
connection = mysql.connector.connect(host='localhost',
database='test',
user='user',
password='password',
auth_plugin='mysql_native_password')
return connection
您可以模拟 mysql.connector.connect
并确保它被调用,但老实说,这可能太小 unit 无法为您的单元测试提供任何好处。这只是委托对 mysql.connector.connect
的调用,它本身应该被测试(由 mysql
包)。
class TestConnection(unittest.TestCase):
@unittest.mock('module_under_test.mysql.connector.connect')
def test_connection(self, mockconnect):
module_under_test.connection()
mockconnect.assert_called()
我想你也可以检查以确保它总是 returns something (以防止将来的修订忘记 return
出功能.
# inside test_connection as above
connection = module_under_test.connection()
self.assertIsNotNone(connection)
mockconnect.assert_called()
我最近为我创建的自定义 class 做了这个,它包装了 Python 的 Oracle MySQL 连接器。我会做类似下面的事情:
import unittest
import mysql.connector
class TestConnection(unittest.TestCase):
"""Oracle MySQL for Python Connector tests."""
connection = None
def setUp(self):
config = {
user = 'user',
password = 'password',
host = 'localhost',
database = 'test',
auth_plugin = 'mysql_native_password'
}
self.connection = mysql.connector.connect(**config)
def tearDown(self):
if self.connection is not None and self.connection.is_connected():
self.connection.close()
def test_connection(self):
self.assertTrue(self.connection.is_connected())
if __name__ == '__main__':
unittest.main()
该解决方案基于setUp()
和tearDown()
方法,分别在每个测试之前和之后执行unittest
提供的方法。这允许我们连接到数据库,运行 进行简单的连接测试,然后关闭连接。这确保了单元测试完成后没有挂起的连接。