FC2ブログ

1日3タックルを目指して頑張ります。 ロリ巨乳が大好きです。 > 今日の3タックルTopへ

Top /  2011年01月

twill の notfind に注意

 2011/01/22 (Sat) -  カテゴリ:  若干エンジニアらしい話 »  Python

良かれと思ってテストを自動化したのに、ちょっとしたことから試験漏れが発生する恐れがあるので自戒の念を込めて残しておく。

twill には twill.commands.find(), twill.commands.notfind() という、twill.commands.go() で移動した画面に「ある文字列」が存在するかをチェックする機能があるんだが、その引数に unicode 文字列を渡しちゃいかん! というお話

たいそう分かりづらいサンプルだが↓の通り。ちなみに http://3tackle.blog55.fc2.com/ のソースは EUC-JP で書かれていて「最新記事10件」という文字列を含んでいる。

>>> from twill.commands import *
>>> go('http://3tackle.blog55.fc2.com/')
==> at http://3tackle.blog55.fc2.com/
'http://3tackle.blog55.fc2.com/'
>>> find(u'最新記事10件'.encode('euc-jp'))   # これは正しく評価されている
>>> find(u'最新記事10件')   # これは常にエラーとなる
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/site-packages/twill-0.9-py2.5.egg/twill/commands.py", line 239, in find
    raise TwillAssertionError("no match to '%s'" % (what,))
twill.errors.TwillAssertionError>>>
>>> notfind(u'最新記事10件')   # これは常にエラーとならない
>>>
>>> notfind(u'最新記事10件'.encode('euc-jp'))   # これは正しく評価されている
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/site-packages/twill-0.9-py2.5.egg/twill/commands.py", line 259, in notfind
    raise TwillAssertionError("match to '%s'" % (what,))
twill.errors.TwillAssertionError: match to '?ǿ?????10??'
>>>
>>>

ここで「http://3tackle.blog55.fc2.com/」に「最新記事10件」という文字列を含まない。というテストを実行したい場合、notfind(u'最新記事10件') と書いてしまうと常に正常に通過するテストとなってしまい正しくテストが行えない。

find() に unicode を渡した場合は、常にエラーとなるテストになるため、大した問題とはならないが、notfind() に unicode を渡した場合は、あたかも正常にテストが通過しているようにみえるため注意が必要である。

スポンサーサイト



 | トップへ | 
最新記事
カテゴリ
最新コメント
最新トラックバック
月別アーカイブ
カウンタ
_
カレンダー
12 | 2011/01 | 02
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
これはやべぇ

インターネッツの設定をしてあげたついでに、接続確認と称してこのブログを開いたら、気になるあの娘が検索したアイテムがwww

万が一アダルトグッズが表示されたりしたらと思うと股間が熱くなるな。

とか妄想してたけど、インターネッツの設定をしてあげた直後に検索の履歴が残ってるわけないか
(´・ω・`)
にしても使い方によってはこの機能は凶悪だな。

プロフィール

タックル

Author:タックル
三度のメシより大ライスが好きなエンジニアです。
焼肉屋に行ったら最初の一杯は大ライスで乾杯! 全然関係ないけど食堂のカレーなら4杯は軽いよ。

ちなみにロリ巨乳は大ライスより好き!

プライベートでタックルされてくれるロリ巨乳のお友達を24時間365日募集中です。

エントリーの内容はタックルの日々の生活について多少脚色しながら面白おかしく書いている限りなくノンフィクションに近いフィクションです。

嘘を嘘と見抜けない人は(ry

Webサービス
フィードメーター - 今日の3タックル あわせて読みたいブログパーツ
タックル会
個人的なリンク