我创建了www.example.com模块,其中包含test.py module, filled with
from django.test import TestCase
from django.test.client import Client
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from forum.models import *
class SimpleTest(TestCase):
def setUp(self):
u = User.objects.create_user("ak", "ak@abc.org", "pwd")
Forum.objects.create(title="forum")
Site.objects.create(domain="test.org", name="test.org")
def content_test(self, url, values):
"""Get content of url and test that each of items in `values` list is present."""
r = self.c.get(url)
self.assertEquals(r.status_code, 200)
for v in values:
self.assertTrue(v in r.content)
def test(self):
self.c = Client()
self.c.login(username="ak", password="pwd")
self.content_test("/forum/", ['<a href="/forum/forum/1/">forum</a>'])
....
并将其与我的应用程序一起放在文件夹中。当我通过
python manage.py test forum
创建测试数据库后,我得到答案"在0.000s内运行0次测试"
我做错了什么?
P.S.以下是我的项目层次结构:
MyProj:
forum (it's my app):
manage.py
models.py
views.py
tests.py
...
我将www.example.com重命名为tests.py。Eclipse发现此模块包含测试,但答案仍然是"在0.000s内运行0个测试"test.py to tests.py. Eclipse got that this module is with tests, but answer is still "Ran 0 tests in 0.000s"
7条答案
按热度按时间jfgube3f1#
您需要为每个测试方法使用前缀
test_
。thtygnil2#
1.尝试仅为您的应用运行:
1.如果YOUR_APP在
INSTALLED_APPS
配置中,请检查您的settings.py
文件。1.测试方法应以
test_
开头,例如:1.如果使用名为
tests
的目录而不是tests.py
文件,请检查该目录中是否包含__init__.py
文件。1.如果您使用的是
tests
目录,请删除tests.pyc
和tests.pyo
文件。(对于Python3为__pycache__
目录)enxuqcxy3#
尝试将方法
test
重命名为类似test_content
的名称。我相信测试运行器会运行所有名为
test_*
的方法(参见python文档来组织测试代码。Django的TestCase
是unittest.TestCase
的子类,所以应该应用相同的规则。r3i60tvu4#
你得把它命名为
tests.py
。2fjabf4q5#
经过一段时间的搜索,我没有发现任何人建议这样做,所以我将分享它作为一个迟来的答案。在我的情况下,我有我的
manage.py
在根目录eg所以我发现test命令可以提供项目要运行的测试,在我的例子中我必须这样做
这成功地运行了我的测试。
yvfmudvl6#
如果将文件重命名为
tests.py
后得到相同的结果,那么有些事情就不太对劲了。您是如何运行测试的?您是从命令行运行测试,还是使用Eclipse设置了一个自定义运行目标?如果还没有,请从命令行尝试。启动Django shell(
python manage.py shell
)并导入测试模块。导入是否正常工作?
lymnna717#
我尝试了所有这些方法,但是我忘了在tests目录中添加__init__.py文件,Django找不到它。