django测试客户端针对所有网址获取404

Bas*_*ann 2 django django-testing

我正在进行Django测试的第一个实验,但是我遇到的问题是,无论我使用哪个url(甚至/),我总是会得到404模板。如果我将完全相同的代码放入django shell中,则它将按预期工作,并始终向我显示请求的URL的内容。

class SimpleTest(TestCase):
    def setUp(self):
        self.user = User.objects.create_user('test', 'test', 'test')
        self.user.is_staff = True 
        self.user.save()
        self.client = Client()

    def test_something(self):
        self.assertTrue(self.client.login(username='test', password= 'test'))
        self.client.get("/")
Run Code Online (Sandbox Code Playgroud)

登录返回True,但是get()失败。有什么暗示我在这里做错了吗?

Chr*_*att 5

请记住,大多数视图使用,或之类的名称get_object_or_404get_list_or_404或者Http404在访问某个对象或另一个对象时出现问题时仅引发该视图。您需要确保测试数据库中填充了足够的对象,以满足所有这些要求,以使视图不返回404。

请记住,在运行测试时,数据库将在每次测试(使用事务)后回滚,因此每个测试方法必须独立运行,或者该setUp方法必须使用任何必需的依赖项填充数据库。