[openstack-dev] [Horizon] unit test improvements: work with DOM, not raw HTML strings?

Richard Jones r1chardj0n3s at gmail.com
Thu Oct 22 22:52:31 UTC 2015


Hi all,

I've noticed that we have quite a few places in our unit test suite that
test for correctness of behaviour by searching for quite complex HTML
fragments in page renders. An example would be
openstack_dashboard/dashboards/project/access_and_security/floating_ips/tests.py

(there's plenty more - search for "expected_string")

The code in question is testing far more than it should. We are testing for
the presence of the "disabled" class in an element which has a clear id
attribute by constructing the whole element HTML, including label and title
text, glyph icon, other classes, the tag type itself, etc. All of those
things are quite irrelevant to the test in question, but any change to
those will cause the test to break unnecessarily.

In these cases a far more robust and targeted unit test would construct a
DOM from the rendered HTML and use semantic searches to determine the
correctness of behaviour. I would recommend we consider using something
like https://django-with-asserts.rtfd.org/ which allow us to write:

 with self.assertHTML(res, element_id='security_groups__action_create') as
elem:
    self.assertContains(elem.attrib['class'], 'disabled')

Who's with me?


    Richard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20151023/a7537283/attachment.html>


More information about the OpenStack-dev mailing list