0
私は以下のコードをセットアップしましたが、すでにDb.__init__
をテストするためのテストケースがあります。どうすれば__del__
をテストできますか?あなたは例を挙げることができますか?Python __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'である必要があります。 –
あなたは '__del__'を使用すべきではありません([この回答](http://stackoverflow.com/questions/1481488/what-is-the-del-method-how-to-call-it/2452895#2452895) )。おそらく、あなたは問題を['with'ステートメント](http://effbot.org/zone/python-with-statement.htm)で解決することができます。 –