Problem was caused by this naive code, which tries to find string "http://www.fedex.com/Tracking?cntry_code=us&tracknumber_list=123465789&language=english" in plain HTML
class ShipmentsListTest(DatabaseTestCase):
def test_tracking_link_presence(self):
self.go200('members:shipments_list')
self.find(self.rentorder.outgoing_tracking_link, flat=True, escape=True)
Which causes this:
File "/Users/zomg/.virtualenvs/dev/src/tddspry/tddspry/django/cases.py", line 497, in find
real_count = html.count(what)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 277: ordinal not in range(128)
Follownig tddspry code we can found that on escape flag it applies
django escape method, which returns an
unicode string.
from django.utils.html import escape as real_escape
.. skipped ..
def find(self, what, flags='', flat=False, count=None, escape=False):
if escape:
what = real_escape(what)
Unfortunately, in
twill won't work with unicode strings.
So here is quick workaround, make string escaping manually and force it to string.
from django.utils.html import escape as real_escape
class ShipmentsListTest(DatabaseTestCase):
def test_tracking_link_presence(self):
self.go200('members:shipments_list')
link = str(real_escape(self.rentorder.outgoing_tracking_link))
self.find(link, flat=True)
Voila!
No comments:
Post a Comment