为什么测试没有检测到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文件。 enter image description here

然后我将其重命名为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链接的文档。

  1. 检查您的测试文件文件名。 (它与django必要的名称方案相匹配吗?)
  2. 检查您的测试文件位置。 (它可以被发现吗?它是否在模块中?是否存在__init__.py?)
  3. 享受你的测试,或者更确切地说......修理它们

您的输出必须更改为以下行:

...
----------------------------------------------------------------------
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的主要内容,如果未能解决你的问题,请参考以下文章

在 if 语句中检测到 Python 语法错误 [关闭]

swig/python 检测到“uint32_t *”类型的内存泄漏,没有找到析构函数

Python 未检测到现有模块

pycharm中的文件层次结构会导致错误

CANoe中XML编程常用标签语法 ——CAN报文周期检测/错误帧检测/信号改变检测。。。

CANoe中XML编程常用标签语法 ——CAN报文周期检测/错误帧检测/信号改变检测。。。