0
具体的には、私の使用法であるかバグ/ドキュメントの問題であるかわからないので、同様の問題(https://github.com/Pylons/webob/issues/320)を投稿したwebob
ライブラリを使用していますUnicodeEncodeError djangoテストスイートとdjango URLを使用して実行されるコードの相違点
次のコードを取る:私はDjangoのシェルを経由して、これを実行すると、私が手
from webob.request import BaseRequest
req = BaseRequest.blank('http://example.com/%D0%B4%D1%8D%D0%BB%D1%8C%D1%8D%D0%BD%D0%B9%D1%82')
print req.environ['PATH_INFO']
print req.path
を:パーとして、それを実行しているよう
>>> req = BaseRequest.blank('http://example.com/%D0%B4%D1%8D%D0%BB%D1%8C%D1%8D%D0%BD%D0%B9%D1%82')
>>> print req.environ['PATH_INFO']
/дэльэнйт
>>> print req.path
/%D0%B4%D1%8D%D0%BB%D1%8C%D1%8D%D0%BD%D0%B9%D1%82
どこ私は最初の印刷から次取得Djangoのテスト・ケースのT:
例外が続く/дÑлÑÑнйÑ
:
File "/code/frontend/tests/test_views.py", line 55, in test_event
print req.path
File "/virtualenv/frontend/local/lib/python2.7/site-packages/webob/request.py", line 485, in path
bpath = bytes_(self.path_info, self.url_encoding)
File "/virtualenv/frontend/local/lib/python2.7/site-packages/webob/descriptors.py", line 68, in fget
return req.encget(key, encattr=encattr)
File "/virtualenv/frontend/local/lib/python2.7/site-packages/webob/request.py", line 175, in encget
return val.decode(encoding)
File "/virtualenv/frontend/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-16: ordinal not in range(128)
私はしかし、両方の、これはおそらく私のテストスイートを持ついくつかの奇妙な構成であることを取得同じ環境(Djangoのmanage.py test
vs manage.py shell
)で同じメソッドを実行するので、私は何が違うのかを特定するのに苦労しています。また、他のユニコード関連のテストも問題なく実行しています。
ありがとうございました。
私が使用して自分のローカル環境でこのエラーを再現しようとしました: - Pythonのインタラクティブシェル - 対話型シェル をジャンゴ - ジャンゴテスト これらのすべてがうまくいった。エンコードに関連するテスト固有の設定はありますか?同じ端末でこれらすべてのケースを実行していますか? – mateuszb
確認のお返事ありがとうございます。私は '__future __。unicode_literals'を実際にインポートしていて、このポストで説明されている問題を修正していますが、このポストは実際にdjango webtestの依存関係を掘り下げています。全体的な問題は本当に解決されていません。私はWebtest自体が私が期待していない方法でエンコーディングするかもしれないと思う。私はこの問題を終わらせ、元の問題の範囲とよりよく一致するものを開くかもしれない。 – DanH