pytest django TestCase用`--pdb`给出了奇怪的失败

时间:2018-01-24 23:35:37

标签: django pytest pdb pytest-django

我有一个非常简单的类,它在任何版本的pytest> 3.0.0上都失败了。当我使用--pdb调用测试时。

from django.test import TestCase


class TestTestCase(TestCase):
    """Tests for the TestCase class."""

    def test_that_client_exists(self):
        """Assert that the class has a client."""
        assert self.client

我使用的是以下版本:

  • platform Linux
  • Python 2.7.11
  • pytest-3.3.1
  • PY-1.5.2
  • pluggy-0.6.0
  • 的django-2.9.2

我收到以下错误:

self = <myproject.tests.test_test_case.TestTestCase testMethod=test_that_client_exists>

    def test_that_client_exists(self):
        """Assert that the class has a client."""
>       assert self.client
E       AttributeError: 'TestTestCase' object has no attribute 'client'

但是,如果我降级到pytest==3.0.0pluggy-0.3.1,代码会毫无问题地执行。我的问题是,这是怎么回事?可能导致这种情况的原因是什么?

好像pytest正在调用test_that_client_exists,但没有调用调用__call__的{​​{1}}。

有没有人见过这样的东西?

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,pytest不会像预期调用标准django测试那样设置类。

我会删除TestCase继承并手动添加到客户端。

from django.test import Client


class TestTestCase():
    """Tests for the TestCase class."""

    client = Client()

    def test_that_client_exists(self):
        """Assert that the class has a client."""
        assert self.client