用django-nose替换django TestCase类

时间:2014-09-13 21:28:46

标签: python django nose

我希望有一个鼻子插件,如果启用它将只生成一个HTML页面,其中运行的所有测试都包含每个测试的请求/响应。

这对于从测试中生成一些文档很有用。

现在我觉得它太难了,但为了做到这一点,我想我必须拦截self.client.get / post /无论什么方法。 要做到这一点,看起来我必须用其他东西替换默认的TestCase类,并且我不想强制任何想要使用此工具的项目必须这样做。

这种作品例如

  import json
  from mock import patch

  from django.core.urlresolvers import reverse
  from django.test import TestCase
  from django.test.client import Client


  class DebuggingClient(Client):
      def __init__(self, *args, **kwargs):
          super(DebuggingClient, self).__init__(*args, **kwargs)

      def get(self, url, *args, **kwargs):
          print("Calling endpoint {} with args {} and kwargs {}".format(url, args, kwargs))
          response = super(DebuggingClient, self).get(url, *args, **kwargs)
          print("Obtained response {}:{}".format(response.status_code, response.content))
          return response


  class TestSimpleApi(TestCase):
      # TODO: how do I make this happen inside the plugin??
      def _pre_setup(self):
          super(TestSimpleApi, self)._pre_setup()
          self.client = DebuggingClient()

      def test_getting_numbers_returns_list_of_first_numbers(self):
          url = reverse('gen_numbers')
          response = self.client.get(url)
          self.assertEqual(response.status_code, 200)
          data = json.loads(response.content)
          self.assertEqual(data, list(range(10)))

但我想这样做只是取决于启用了鼻子插件。 知道怎么样?我无法从鼻子插件中找到改变基类的方法(除非做一些疯狂的猴子修补)。 即使远离工作,该项目仍然在这里..

https://github.com/AndreaCrotti/django-docs-from-tests

0 个答案:

没有答案