Django测试用例无法运行方法

时间:2015-06-13 02:32:24

标签: python django testing

我刚刚开始使用Django,所以这可能是一个愚蠢的事情,但我甚至不确定在这一点上google是什么。

我有一个看起来像这样的方法:

def get_user(self,user):
    return Utilities.get_userprofile(user)

方法如下:

@staticmethod
def get_userprofile(user):
    return UserProfile.objects.filter(user_auth__username=user)[0]

当我在视图中包含它时,一切都很好。当我编写一个测试用例来使用Utility类中的任何方法时,我得到None:

两个测试用例:

def test_stack_overflow(self):
    a = ObjName()
    print(a.get_user('admin'))

def test_Utility(self):
    print(Utilities.get_user('admin'))

结果:

Creating test database for alias 'default'...
None
..None
.
----------------------------------------------------------------------

有人可以告诉我为什么这在视图中工作,但不在测试用例内部工作并且不会生成任何错误消息?

由于

1 个答案:

答案 0 :(得分:8)

验证您的单元测试是否符合以下条件,

  1. TestClass必须以文件名test*.py
  2. 编写
  3. TestClass必须已从unittest.TestCase
  4. 创建子类
  5. TestClass应该有setUp函数来创建对象(通常以这种方式完成,但对象创建也可以在测试函数中发生)在数据库中
  6. TestClass函数应以test开头,以便通过./manage.py测试命令进行识别和运行
  7. TestClass可能tearDown正确结束单元测试用例。
  8. 测试用例执行过程:

    当您运行./manage.py test时,django会设置test_your_database_name并创建setUp函数(通常)中提到的所有对象,并按照放置顺序开始执行测试函数类和一次执行所有测试函数时,最终查找tearDown函数执行,如果测试类中存在任何函数并破坏测试数据库。

    可能因为您可能没有在setUp函数或TestClass中的其他位置调用对象创建。

    您能否发布整个追溯和测试文件以帮助您更好?