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()

我的模型.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

您的个人测试功能应以“测试”一词开头。

您需要将功能更改def sample_data(self):def test_sample_data(self):

tests.py测试运行程序将在名为unittest.TestCase. 然后它将运行该类中以单词 test 开头的任何函数(加上一两个其他函数,例如setup()

我可能很迟钝,但我在主要的 django 测试文档中看不到任何东西,说明函数必须以单词 test 开头。无论如何,这个(官方)教程中有对要求的参考。

于 2013-02-13T12:18:17.963 回答
2

test.py错了,应该是tests.py

有关编写测试的文档

对于给定的 Django 应用程序,测试运行程序会在两个地方查找单元测试:

  • 模型.py 文件。测试运行器在此模块中查找 unittest.TestCase 的任何子类。
  • 应用程序目录中名为 tests.py的文件——即保存 models.py 的目录。同样,测试运行器在此模块中查找 unittest.TestCase 的任何子类。
于 2013-02-13T12:06:49.020 回答