Методы тестирования, которые ничего не возвращают, xml, python

Я пытаюсь понять, почему, как и если для методов модульного тестирования, которые, похоже, ничего не возвращают. Я читал в паре других тем, что:

The point of a unit test is to test something that the function does. If its not returning a value, then what is it actually doing?

unittest для любого типа в 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. Я прочитал, что проверять():

class signxml.XMLVerifier Create a new XML Signature Verifier object, which can be used to hold configuration information and verify multiple pieces of data. verify(data, require_x509=True, x509_cert=None, cert_subject_name=None, ca_pem_file=None, ca_path=None, hmac_key=None, validate_schema=True, parser=None, uri_resolver=None, id_attribute=None, expect_references=1)

Verify the XML signature supplied in the data and return the XML node signed by the signature, or raise an exception if the signature is not valid. By default, this requires the signature to be generated using a valid X.509 certificate.

Я впервые работаю с этим, и сейчас я запутался еще больше. Так что это, по-видимому, что-то возвращает.

Что я пытался

Для другого метода, который заканчивается вызовом verify_xml, я использовал @patch и просто проверил, что метод, который я исправил, был вызван и с правильными аргументами. Также кажется, что это не способ делать это, но я не знал, как еще это проверить.

Странно делать что-то подобное с методом verify_xml и просто проверять, был ли он вызван один раз.

Я также пробовал self.assertIsNone..., и это прошло, но мне это кажется странным и не похоже на то, как это делают.

Может ли кто-нибудь помочь мне понять, почему, как и если для методов модульного тестирования, которые, похоже, ничего не возвращают).

Спасибо

1
0
97
1

Ответы 1

для проверки 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)

Другие вопросы по теме