2

端末で実行するpython manage.py test appnameと、次のようになります: Ran 0 tests in 0.000s OK

これは私のtests.pyです:

from django.test import TestCase
import appname.factories

class UserProfileTest(TestCase):
    def sample_data(self):
        for i in range(0, 10):
            user = appname.factories.UserProfileFactory.create()

私のmodels.py:

from django.db import models

class UserProfile(models.Model):
    street = models.CharField(max_length=250)
    tel = models.CharField(max_length=64, default='', blank=True)
    postcode = models.CharField(max_length=250)

    def __unicode__(self):
        return self.tel

私の factory.py (ファクトリー ボーイ):

from appname.models import *
import factory


class UserProfileFactory(factory.Factory):
    FACTORY_FOR = UserProfile

    street = factory.Sequence(lambda n: 'Street' + n)
    tel = factory.Sequence(lambda n: 'Tel' + n)
    password = 'abcdef'
4

2 に答える 2

5

個々のテスト関数は、'test' という単語で始まる必要があります。

def sample_data(self):関数を次のように変更する必要がありますdef test_sample_data(self):

テスト ランナーはtests.py、アプリのルートにあり、unittest.TestCase. 次に、単語 test で始まるそのクラス内のすべての関数を実行します (さらに、 などの他の関数を 1 つまたは 2 つ実行しますsetup()) 。

私はおそらく鈍感ですが、メインの django テスト ドキュメントには、関数は単語 test で始まる必要があると述べているものは何も見当たりませんでした。とにかく、この(公式)チュートリアルの要件への参照があります。

于 2013-02-13T12:18:17.963 に答える
2

test.py間違っている、そうあるべきだtests.py

テストの作成に関するドキュメントは次のように述べています。

特定の Django アプリケーションの場合、テスト ランナーは次の 2 つの場所で単体テストを探します。

  • models.py ファイル。テスト ランナーは、このモジュールで unittest.TestCase のサブクラスを探します。
  • アプリケーション ディレクトリ (つまり、models.py を保持するディレクトリ) にあるtests.py という名前のファイル。繰り返しますが、テスト ランナーはこのモジュールで unittest.TestCase のサブクラスを探します。
于 2013-02-13T12:06:49.020 に答える