为什么测试没有检测到test.py的语法错误?并帮我修复一个bug
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么测试没有检测到test.py的语法错误?并帮我修复一个bug相关的知识,希望对你有一定的参考价值。
我写了一个测试代码,如下所示,它有一些错误,我无法检测到,但我的老师说你错过了代码中某处的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:UsersAdministratorDesktopPracticeoardsrc>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'...
检查我的代码,我看到我misspelt resolve
,在这里我遇到这个问题,为什么它没有在测试后抛出语法错误,因为resolve()是拼错?然后我故意在self.clieent.get(url)
中添加额外的'e'并再次没有错误?请帮助我理解这一点非常感谢你
编辑:我的测试文件名为tests.py,它位于主板目录应用程序中!还有init.py文件。
然后我将其重命名为test_board.py并运行测试。它说ran 0 tests
?怎么了?
没有错误,因为你没有运行任何测试。您的测试文件名必须以test
开头,如test_something.py
,文件夹需要有__init__.py
文件。
有关django如何发现在此运行的测试的更多信息:https://docs.djangoproject.com/en/2.2/topics/testing/overview/#running-tests
阅读doc @Marcelo链接的文档。
- 检查您的测试文件文件名。 (它与django必要的名称方案相匹配吗?)
- 检查您的测试文件位置。 (它可以被发现吗?它是否在模块中?是否存在
__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>,
]
以上是关于为什么测试没有检测到test.py的语法错误?并帮我修复一个bug的主要内容,如果未能解决你的问题,请参考以下文章
swig/python 检测到“uint32_t *”类型的内存泄漏,没有找到析构函数