没有返回任何内容的测试方法,XML,Python

时间:2018-04-11 10:14:22

标签: python xml unit-testing

我试图理解为什么,如何以及是否将单独的测试方法看作什么也没有返回。我读过其他一些帖子:

  

单元测试的目的是测试函数的功能。如果它没有返回一个值,那么它实际上在做什么?

unittest for none type in python?

在我的示例中,我使用的是XMLSigner库中的XMLVerifiersign_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...并且通过了但这对我来说似乎很奇怪,而不是像这样做的方式。

有人可以帮助我理解为什么,如何以及是否单元测试方法似乎什么都不返回。

由于

1 个答案:

答案 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)