Introducing unittest-xml: testing XML in python
Join the DZone community and get the full member experience.
Join For FreeFor some reason, I keep finding myself writing unit tests that need to make
assertions about an XML document. To keep things DRY, I've packaged up my
custom assertion methods as a PyPi module: unittest-xml. There's a small
chance it may be useful to others.
Sample Usage
Enable the additional assert methods using a mixin:
import unittest from xmltest import XMLAssertions class SampleTestCase(unittest.TestCase, XMLAssertions): ...
Now suppose that the expected XML from some System Under Test (SUT) is:
<?xml version="1.0" encoding="UTF-8" ?> <Response> <CardTxn> <authcode>060642</authcode> <card_scheme>Switch</card_scheme> <issuer country="UK">HSBC</issuer> </CardTxn> <reference>3000000088888888</reference> <merchantreference>1000001</merchantreference> <mode>LIVE</mode> <reason>ACCEPTED</reason> <status>1</status> <time>1071567305</time> </Response>
then you can make assertions about the document using 3 additional
assertions methods.
self.assertXPathNodeCount(RESPONSE, 1, 'CardTxn/authcode') self.assertXPathNodeText(RESPONSE, 'LIVE', 'mode') self.assertXPathNodeAttributes(RESPONSE, {'country': 'UK'}, 'CardTxn/issuer')
The first argument to each method is the XML string, the second is the expected value, while
the third is the XPath query.
Installation
The standard way:
pip install unittest-xml
Discussion
Note, the implementation uses ElementTree and so only a subset of the XPath specification is implemented. However the above three assertion methods are sufficient for most scenarios.
The code is on Github, as usual.
Source: http://codeinthehole.com/writing/introducing-unittest-xml-testing-xml-in-python/
Opinions expressed by DZone contributors are their own.
Comments