Skip to main content
 首页 » 编程设计

python之为什么测试没有检测到 test.py 的语法错误并帮我修复一个错误

2025年05月04日15haluo1

我写了一个测试代码如下,它有一些错误,我无法检测到,但我的老师说你在代码中的某个地方错过了 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 关键字应该在哪里?为什么?

然后,我去了图书馆并检查了 bug,我错误地在 view = resolvep('/') 中添加了一个 'p' 并且不知道我运行了 python manage .py 测试 它显示了这个结果:

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,它在 board 目录 app 中!还有 init.py 文件。

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

请您参考如下方法:

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

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