我试图理解为什么,如何以及是否将单独的测试方法看作什么也没有返回。我读过其他一些帖子:
单元测试的目的是测试函数的功能。如果它没有返回一个值,那么它实际上在做什么?
unittest for none type in python?
在我的示例中,我使用的是XMLSigner
库中的XMLVerifier
和sign_XML
。
def verify_xml(signed_xml: str, cert_file: str) -> None:
with open(cert_file, 'rb') as file:
cert = file.read()
with open(signed_xml, 'rb') as input_file:
input_data = input_file.read()
XMLVerifier().verify(input_data, x509_cert=cert)
我开始查找我为SignXML找到的文档。我读到了 verify():
class signxml.XMLVerifier 创建一个新的XML Signature Verifier对象, 可用于保存配置信息和验证 多个数据。验证(data,require_x509 = True, x509_cert =无,cert_subject_name =无,ca_pem_file =无, ca_path = None,hmac_key = None,validate_schema = True,parser = None, uri_resolver = None,id_attribute = None,expect_references = 1)
验证 XML签名在数据中提供并返回由签名的XML节点 签名,如果签名无效,则提出异常。通过 默认情况下,这需要使用有效的签名生成签名 X.509证书。
这是我第一次使用这个,现在我更加困惑了。所以这显然确实会有所回报。
我尝试了什么
对于另一个最终调用verify_xml
的方法,我已经使用了@patch,并且检查了我修补的方法并且使用了正确的参数。这似乎不是这样做的方式,但我不知道如何测试它。
使用verify_xml
方法执行类似操作并检查它是否已被调用一次感觉很奇怪。
我也尝试了self.assertIsNone...
并且通过了但这对我来说似乎很奇怪,而不是像这样做的方式。
有人可以帮助我理解为什么,如何以及是否单元测试方法似乎什么都不返回。
由于
答案 0 :(得分:0)
测试verify_xml()
是测试XMLVerifer().verify()
触发的异常
您可以测试几种类型的例外。
from signxml import (XMLSigner, XMLVerifier, InvalidInput, InvalidSignature, InvalidCertificate, InvalidDigest)
class TestVerifyXML(unittest.TestCase):
def setUpCls(cls):
cls.signed_xml = from_magic()
cls.cert_file = from_magic2()
cls.ceft_file_bad = from_magic_bad()
def test_verify_xml(self):
# no Exception with correct xml
verify_xml(self.signed_xml, self.cert_file)
with self.assertRaises(InvalidSignature):
verify_xml(self.signed_xml, self.cert_file_bad)