我刚刚开始使用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
.
----------------------------------------------------------------------
有人可以告诉我为什么这在视图中工作,但不在测试用例内部工作并且不会生成任何错误消息?
由于
答案 0 :(得分:8)
验证您的单元测试是否符合以下条件,
TestClass
必须以文件名test*.py
TestClass
必须已从unittest.TestCase TestClass
应该有setUp
函数来创建对象(通常以这种方式完成,但对象创建也可以在测试函数中发生)在数据库中TestClass
函数应以test
开头,以便通过./manage.py
测试命令进行识别和运行TestClass
可能tearDown
正确结束单元测试用例。测试用例执行过程:
当您运行./manage.py test
时,django会设置test_your_database_name
并创建setUp
函数(通常)中提到的所有对象,并按照放置顺序开始执行测试函数类和一次执行所有测试函数时,最终查找tearDown
函数执行,如果测试类中存在任何函数并破坏测试数据库。
可能因为您可能没有在setUp函数或TestClass
中的其他位置调用对象创建。
您能否发布整个追溯和测试文件以帮助您更好?