我写了一个如下的测试代码,其中有一些我无法检测到的错误,但是我的老师说你在代码中的某个地方错过了self
。那就像是我找不到那个提示。这是我的代码:
def HomeTests(TestCase):
def setUp(self):
board = Board.objects.create(
title='Django', description='Django Desc')
url = reverse('home')
response = self.client.get(url)
def home_test_view_status_code(self):
self.assertEqual(response.status_code, 200)
def home_test_func(self):
view = resolve('/')
self.assertEqual(view.func, home)
def test_home_contains_link_to_topics_page(self):
board_topics_url = reverse(
'board_topics', kwargs={'id': board.pk})
self.assertContains(response, 'href={0}'.format(board_topics_url))
即使我运行python manage.py test
,该代码也不会引发任何错误:
System check identified no issues (0 silenced).
----------------------------------------------------------------------
Ran 0 tests in 0.000s
请帮助我我在这里做错了。 self
关键字应该在哪里?为什么?
然后,我去图书馆检查并发现错误,然后错误地在view = resolvep('/')
中添加了'p',却不知道我在运行python manage.py test
时显示了以下结果:
C:\Users\Administrator\Desktop\Practice\board\src>python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Destroying test database for alias 'default'...
在检查我的代码时,我发现我遗忘了resolve
,在这里我遇到了这个问题,为什么它在测试后没有抛出语法错误,因为resolve()是错误的?
然后,我有意在self.clieent.get(url)
中添加了一个额外的'e',再次没有错误?
请帮我了解一下
非常感谢
编辑:我的测试文件名为tests.py,它在开发板目录应用中!还有 init .py文件。
然后我将其重命名为test_board.py并运行测试。它说ran 0 tests
?怎么了?
答案 0 :(得分:5)
您没有错误,因为您没有进行任何测试。测试文件名必须以test
开头,例如test_something.py
,并且该文件夹需要有一个__init__.py
文件。
有关django如何发现要在此处运行的测试的更多信息:https://docs.djangoproject.com/en/2.2/topics/testing/overview/#running-tests
答案 1 :(得分:1)
阅读@Marcelo链接的文档。
__init__.py
?)您的输出具有可以更改为以下内容:
...
----------------------------------------------------------------------
Ran 3 tests in ?.???s
OK
(以上输出仅在您修复了测试中的错误之后才是正确的。但是这些错误与Django无法发现它们无关)
建议用于许多测试的文件结构:
+<project_name>
|--+<project_name>
|--+<app_name>
|--+tests
| |-- __init__.py
| |-- test_<general_topic>.py
|--+templates
...
最小示例:
+<project_name>
|--+<project_name>
|--+<app_name>
|--+templates
|-- tests.py
...
最小示例要求您的测试代码位于tests.py中。许多测试的文件结构要求您的测试代码位于test_*.py
文件中,并且STILL的功能名为test_*
。
您的应用是否已添加到项目settings.py
中?
INSTALLED_APPS = [
...,
<app_name>,
]