たろマーク (はてなブックマーク)
-
[ design ][ oss ][ design ]
-
[ css ]
-
新しく作った開発プロセスの問題点が見えたわけだから、それはそれとして改善すればいいのに。プロジェクトに併せてテーラリングされてないのとか。そういうことを自発的にやれる人たちが必要だというのもわかるけど
-
python manage.py runserver
■ doctest でテストを書く
README.txt に reST でパッケージの概要を書く
=================
atomisator.parser
=================
parser が提供する最上位関数 'parse' を使い、フィードからコンテンツを取得します。
>>> import os
>>> from atomisator.parser import parse
この館数は、フィード URL を引数に取り、取得したコンテンツをイテレータとして返します。
2つめのパラメータには取得する最大エントリ数を指定できます。
最大エントリ数を指定しなかった場合、最大10件まで取得します::
>>> res = parse(os.path.join(os.path.dirname(__file__), 'sample.xml'))
>>> res #doctest: +ELLIPSIS
<itertools.islice ...>
イテレータの各要素はエントリの情報を含む辞書型の値となります。::
>>> entry = res.next()
>>> entry['title']
u'CSSEdit 2.0 Released'
辞書には以下のキーが格納されています::
>>> keys = sorted(entry.keys())
>>> list(keys)
['id', 'link', 'links', 'summary', 'summary_detail', 'tags', 'title', 'title_detail']
このまま ~/Desktop/my_env/bin/nosetests --with-doctest --doctest-extension=.txt とかするとテストがこける。--with-doctest は、doctest も行う指定、--doctest-extension=.txt は、doctest のファイルの拡張子の指定。んで、__init__.py にこのテストが通るようにコードを書く
from feedparser import parse as feedparse
from itertools import islice
from itertools import imap
def _filter_entry(entry):
"""Filters entry field."""
entry['links'] = [link['href'] for link in entry['links'] ]
return entry
def parse(url, size=10):
"""Returns entries of the feed."""
result = feedparse(url)
return islice(imap(_filter_entry, result['entries']), size)
すると、テストが通る。
$ ~/Desktop/my_env/bin/nosetests --with-doctest --doctest-extension=.txt . ---------------------------------------------------------------------- Ran 1 test in 0.451sOK
reST で概要書いたらそれがそのままテストになるのは面白いなー。
nose は unittest の機能を提供しているパッケージらしい。エキスパート Python プログラミング、6章読んだら、11章読もうかなぁ。
エキスパートPythonプログラミング
posted with amazlet at 11.02.20
Tarek Ziade
アスキー・メディアワークス
売り上げランキング: 9716
アスキー・メディアワークス
売り上げランキング: 9716