为什么测试无法检测到test.py的语法错误?并帮助我修复错误

时间:2019-04-10 08:32:34

标签: python django testing

我写了一个如下的测试代码,其中有一些我无法检测到的错误,但是我的老师说你在代码中的某个地方错过了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文件。 enter image description here

然后我将其重命名为test_board.py并运行测试。它说ran 0 tests?怎么了?

2 个答案:

答案 0 :(得分:5)

您没有错误,因为您没有进行任何测试。测试文件名必须以test开头,例如test_something.py,并且该文件夹需要有一个__init__.py文件。

有关django如何发现要在此处运行的测试的更多信息:https://docs.djangoproject.com/en/2.2/topics/testing/overview/#running-tests

答案 1 :(得分:1)

阅读@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>,
]