Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Introducing unittest-xml: testing XML in python

DZone's Guide to

Introducing unittest-xml: testing XML in python

· Web Dev Zone
Free Resource

Try RAD Studio for FREE!  It’s the fastest way to develop cross-platform Native Apps with flexible Cloud services and broad IoT connectivity. Start Your Trial Today!

For 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/

Get Your Apps to Customers 5X Faster with RAD Studio. Brought to you in partnership with Embarcadero.

Topics:

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}