pytest django需要对不访问数据库的测试进行数据库访问

时间:2019-05-30 20:43:37

标签: python django pytest

我已经开始将一些测试转移到在Django项目中使用pytest。但是,当在简单测试上进行测试时,pytest会产生一条错误消息,指出该测试需要访问数据库。但是,django testrunner中的等效测试使用的是SimpleTestCase,而不使用django数据库。

原始测试

class TestHomeView(SimpleTestCase):

    def test_uses_home_template(self):
        response = self.client.get(reverse('home'))
        self.assertTemplateUsed(response, 'pages/home.html')

pytest中的测试

@pytest.mark.django_db
def test_home_template(client):
    response = client.get(reverse('home'))
    assert 'home.html' in [t.name for t in response.templates]

删除django_db标记会使测试失败。我能想到的唯一可能的数据库用途是我们正在使用会话中间件(尽管在该视图中我们并未积极使用会话)。 pytest为什么认为此测试需要访问数据库?

0 个答案:

没有答案