我正在测试创建 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)