我正在为一个烧瓶应用程序编写一些断言。我在回答中成功地测试了Umlauts,如下所示:
assert 'Wählen Sie ...'.encode('utf-8') in rv.data
Umlaut“”在编码数据和来自web应用程序的响应中都具有相同的表示形式(\xc3\xa4)。
但现在,我试着用双引号来做同样的事情:
assert 'Der gewünschte Monat ... z.B. "2019-5".'.encode('utf-8') in rv.data
这是失败的,因为"在编码时仍然是",但是web应用程序使用"进行响应。
为了实现兼容性,我应该对正在测试的字符串做些什么?
发布于 2019-07-12 10:21:11
web应用程序在编码utf-8之前使用html实体代码对双引号进行编码。您可以使用html.escape函数来模拟这个过程,但不幸的是,它用"而不是"代替了‘“。
xml.sax.saxutils.escape函数不会自动转义双引号,但它接受要转义的字符字典和转义值,因此可以使用它生成文本:
>>> from xml.sax import saxutils
>>> escaped = saxutils.escape('Der gewünschte Monat ... z.B. "2019-5".', {'"': '"'})
>>> escaped
'Der gewünschte Monat ... z.B. "2019-5".'相反的方法是解码和取消服务器响应,并将其与原始字符串进行比较。您可以为此使用html.unescape函数,因为它将取消数字转义:
>>> import html
>>> response = html.unescape(rv.data.decode('utf-8'))
>>> assert 'Der gewünschte Monat ... z.B. "2019-5".'.encode('utf-8') in responsehttps://stackoverflow.com/questions/57002548
复制相似问题