2011-09-29 19 views
2

私はDjangoで私のテストスイートに小さな問題があります。Djangoとdocfilesのテスト

私はDjangoとPlone(http://pypi.python.org/pypi/jquery.pyproxy)の両方で動作するPythonパッケージに取り組んでいます。 すべてのテストは、Pythonコードまたは別のdocfile(README.txtなど)のいずれかでdoctestとして記述されています。

私は、これらのテストはうまく実行されていることができますが、Djangoはちょうどそれらをカウントされません:

[vincent ~/buildouts/tests/django_pyproxy]> bin/django test pyproxy 
... 
Creating test database for alias 'default'... 

---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 

しかし、私はいくつかの失敗のテストを持っていた場合、それが正しく表示されます。

[vincent ~/buildouts/tests/django_pyproxy]> bin/django test pyproxy 
... 
Failed example: 
    1+1 
Expected nothing 
Got: 
    2 
********************************************************************** 
1 items had failures: 
    1 of 44 in README.rst 
***Test Failed*** 1 failures. 
Creating test database for alias 'default'... 

---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 

これがどのように私ですテストスイートは現在宣言されています:

import os 
import doctest 
from unittest import TestSuite 

from jquery.pyproxy import base, utils 

OPTIONFLAGS = (doctest.ELLIPSIS | 
      doctest.NORMALIZE_WHITESPACE) 

__test__ = { 
    'base': doctest.testmod(
     m=base, 
     optionflags=OPTIONFLAGS), 

    'utils': doctest.testmod(
     m=utils, 
     optionflags=OPTIONFLAGS), 

    'readme': doctest.testfile(
     "../../../README.rst", 
     optionflags=OPTIONFLAGS), 

    'django': doctest.testfile(
     "django.txt", 
     optionflags=OPTIONFLAGS), 

    } 

私はテストを宣言するときに間違っていると思いますiteしかし、私はそれが正確であるかの手がかりを持っていません。 doctest.testfileまたはdoctest.testmodは、そのテストで呼び出すとき

import os 
import doctest 
from django.utils import unittest 

from jquery.pyproxy import base, utils 

OPTIONFLAGS = (doctest.ELLIPSIS | 
       doctest.NORMALIZE_WHITESPACE) 

testmods = {'base': base, 
      'utils': utils} 
testfiles = {'readme': '../../../README.rst', 
      'django': 'django.txt'} 

def suite(): 
    return unittest.TestSuite(
     [doctest.DocTestSuite(mod, optionflags = OPTIONFLAGS) 
     for mod in testmods.values()] + \ 
     [doctest.DocFileSuite(f, optionflags = OPTIONFLAGS) 
     for f in testfiles.values()]) 

どうやら問題:あなたの助け、 ヴィンセント

+1

質問に「私は結局解決しました...」を入れないでください。これを削除します。答えを作成します。それを解決した場合は、解答として投稿する必要があります。質問の続きではなく、回答を回答として投稿する方がはるかに優れています。 –

+0

これは私が最初に試したものですが、数時間前まで私自身の質問に答えることはできません。これを可能な限り更新します。 – Vincent

答えて

1

ため

おかげで、私は最終的にスイート()メソッドの問題を解決しました直接実行されます。 DocTestSuite/DocFileSuiteを使用するとリストが作成され、テストランナーがそれらを実行します。