とりあえず (2)

頂戴したコメントに沿って tests.py に名前を変えたら試験が動いた模様。どうもありがとうございます。ナチュラルにも程があります ...
がしかし

======================================================================
ERROR: test_details (rss.rssreader.tests.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/guest/tmp/rss/../rss/rssreader/tests.py", line 9, in test_details
    response = self.client.get('/')
  File "/usr/lib/python2.4/site-packages/django/test/client.py", line 218, in get
    return self.request(**r)
  File "/usr/lib/python2.4/site-packages/django/core/handlers/base.py", line 82, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.4/site-packages/Feedjack-0.9.12-py2.4.egg/feedjack/views.py", line 135, in mainview
    response, site, cachekey, sfeeds_obj, sfeeds_ids = initview(request)
  File "/usr/lib/python2.4/site-packages/Feedjack-0.9.12-py2.4.egg/feedjack/views.py", line 31, in initview
    site_id, cachekey = fjlib.getcurrentsite(request.META['HTTP_HOST'], \
KeyError: 'HTTP_HOST'

----------------------------------------------------------------------
Ran 4 tests in 0.098s

FAILED (errors=1)

との事。試験のコードは以下

   def test_details(self):
        response = self.client.get('/rss/')

        self.failUnlessEqual(response.status_code, 200)

むむ。これは適当に試験を書いてるからこうなる、と見ます。真面目に書こう。

続き

request なオブジェクトは用意してから get するのだろうか。
http://www.python.jp/Zope/workshop/200703/files/MeetDjango.pdf
うーん、どこにも出てない。と言いつつ
http://groups.google.co.kr/group/django-users/msg/76f3f978c761d362
みたいな記事を発見。Client なオブジェクト作る時に無理矢理渡してみる。

class SimpleTest(unittest.TestCase):
    def setUp(self):
        self.client = Client(HTTP_HOST = '127.0.0.1',
                             REQUEST_URI = '/',
                             QUERY_STRING = '')

    def test_details(self):
        response = self.client.get('/rss/')

        self.failUnlessEqual(response.status_code, 200)

微妙な warning が出たが一応試験パス。
feedjack.views.initview から呼んでいる feedjack.fjlib.getcurrentsite に渡すパラメータが request オブジェクトの META という辞書のナニに値がセットされていないのが原因だった模様。
request オブジェクト (の META 属性) は django.test.client.Client を生成する時にパラメータで渡せる模様。ソース読むべきなのでしょうが、そのリキは残っていません。
とりあえず一旦エントリを投入。

どうするか

む。template 追加して云々な試験ができるな。一応 Feedjack 本体の試験もでっち上げてみた方が良いのかもしれませんが現時点では微妙。ヤリたくはありますが ...
model を save してみて例えば

  • verify_exists=True であれば exist な時の例外なソレをチェキ
  • unique=True であれば unique でない時の (ry
  • default=True って意味確認

とかの属性な試験はできるのかな。とりあえず差分なソレ的には現状 github に登録しているベースで template いぢって動くナニが確認できれば良い、という方向で