我已经设置了以下代码,并且我有一个测试用例来测试Db.__init__
,那么我该如何测试__del__
呢?你能提供一个例子吗?
import psycopg2
class Db(object):
def __init__(self):
import app
conn_string = "host='{}' port='{}' dbname='{}' user='{}' password='{}'".format(app.app.config['DB_HOST'], \
app.app.config['DB_PORT'], app.app.config['DB_NAME'], app.app.config['DB_USER'], \
app.app.config['DB_PASSWORD'])
self.conn = psycopg2.connect(conn_string)
def __del__(self):
self.conn.close()
测试用例
@ddt
class TestDB(unittest.TestCase):
@patch('psycopg2.connect')
def test_db_constructor(self, mock_psycopg2_connect):
mock_psycopg2_connect.returned_value = True
db = Db()
self.assertTrue(db.conn)
mock_psycopg2_connect.return_value
。 - Martijn Pieters__del__
(参见这个答案)。或许你可以用with
语句 来解决问题。 - Solomon Slow