簡體   English   中英

來自導入模塊的 Python 模擬函數

[英]Python mocking function from imported module

如何為以下代碼編寫單元測試用例。 該代碼僅返回一個數據庫連接。 我無法創建真正的數據庫連接。 所以,我依賴於對象模擬。

文件:code.py

import snowflake.connector
import logging
import simplejson as json


def get_database_connection(user, password, account, warehouse, database=None, schema=None):
    logging.info("DB Connection : START : " + __name__)
    try:
        return snowflake.connector.connect(
            user=user,
            password=password,
            account=account,
            warehouse=warehouse,
            database=database,
            schema=schema
        )
    except Exception:
        logging.exception("Exception while creating connection")

測試代碼.py

class SnowflakeDbTest(unittest.TestCase):

    def test_get_database_connection(self):
         snowflake = Mock()
         snowflake.connector.return_value = Mock()
         snowflake.connector.connect.return_value = "dbconnection"
         self.assertEqual("dbconnection", code.get_database_connection("user", "password", "account", "warehouse", database=None, schema=None))

解決方案

    @patch('code.snowflake.connector')
    def test_get_database_connection(self, mock_connection):
         mock_connection.connect.return_value = "dbconnection"
         self.assertEqual("dbconnection", snowflakedb.get_database_connection("user", "password", "account", "warehouse", database=None, schema=None))

如何模擬在“code.py”中導入的“snowflake.connector”

修補是解決方案

    @patch('code.snowflake.connector')
    def test_get_database_connection(self, mock_connection):
         mock_connection.connect.return_value = "dbconnection"
         self.assertEqual("dbconnection", snowflakedb.get_database_connection("user", "password", "account", "warehouse", database=None, schema=None))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM