在运行单元测试测试 Azure keyvault 相关类时获取 ResourceWarning

问题描述 投票:0回答:0

我正在测试创建 Azure 密钥库和机密的 Python 代码。我已经为基本的 Azure keyvault 函数编写了一个包装类,用于创建和删除 keyvaults。

运行我的单元测试时,我收到以下警告:

./opt/homebrew/Cellar/[email protected]/3.9.16/Frameworks/Python.framework/Versions/3.9/lib/python3.9/unittest/suite.py:107: ResourceWarning: unclosed <ssl.SSLSocket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.34', 57154), raddr=('51.116.150.70', 443)>
  for index, test in enumerate(self):
ResourceWarning: Enable tracemalloc to get the object allocation traceback
./opt/homebrew/Cellar/[email protected]/3.9.16/Frameworks/Python.framework/Versions/3.9/lib/python3.9/unittest/suite.py:84: ResourceWarning: unclosed <ssl.SSLSocket fd=8, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.34', 57183), raddr=('51.116.150.70', 443)>
  return self.run(*args, **kwds)
ResourceWarning: Enable tracemalloc to get the object allocation traceback

----------------------------------------------------------------------
Ran 2 tests in 35.453s

OK

测试运行成功,但为什么会收到此警告?

当使用普通的 main() 函数而不是测试框架测试类时,我没有收到任何警告。所以这似乎是一个单元测试问题。

测试代码如下:

# Testing creation an deletion of an azure keyvault

import unittest
import random
import string

from azure_keyvault import Keyvault, keyvault_client #wrapper


class TestAzureKeyvault(unittest.TestCase):
    """Test creation an deletion of an azure keyvault

    Args:
        unittest (_type_): _description_
    """

    def setUp(self):
        # create a random name for the keyvault
        rand_str = "".join(random.choices(string.ascii_lowercase, k=10))
        self.tresor_name = f"test-kv-{rand_str}"
        # create keyvault_client and keyvault objects
        self.kv_client = keyvault_client()
        self.kv = Keyvault(tresor_name=self.tresor_name, keyvault_client=self.kv_client)

    def test_keyvault_create(self):
        # create keyvault and check if it is contained in the list of azure keyvaults
        self.kv.create()
        kv_list = [kv.name for kv in self.kv_client.vaults.list()]
        self.assertIn(self.tresor_name, kv_list)

    def test_keyvault_delete(self):
        # delete previsously created keyvault and check if it's missing in the list of the azure keyvaults
        kv = Keyvault(tresor_name=self.tresor_name, keyvault_client=self.kv_client)
        kv.delete()
        kv_list = [kv.name for kv in self.kv_client.vaults.list()]
        self.assertNotIn(self.tresor_name, kv_list)

python azure python-unittest azure-keyvault
© www.soinside.com 2019 - 2024. All rights reserved.