跳转到主要内容

Django项目的测试工具。

项目描述

django-pigeon

Django项目的测试工具

Build Status codecov Codacy Badge

安装

$ pip install django-pigeon

使用

django-pigeon配备了RenderTestCase,它提供了Django的TestCase之上的一系列方法,有助于Django中视图的端到端测试。编写一个验证视图是否正确渲染的测试非常简单

from pigeon.test import RenderTestCase


class FooTestCase(RenderTestCase):

    def testFooView(self):
        self.assertResponseRenders('/foo/')

您还可以检查渲染后的响应

def testFooView(self):
    response = self.assertResponseRenders('/foo/')
    self.assertIn('FOO', response.content)

默认情况下,assertResponseRenders验证响应的状态码是200,但您可以通过指定status_code关键字参数来更改此设置

def testBarView404(self):
    self.assertResponseRenders('/bar/', status_code=404)

您还可以使用assertResponseRenders通过提供methoddata关键字参数来执行POST和PUT请求

def testCreateFooView(self):
    payload = {'text': 'Hello World!'}
    self.assertResponseRenders('/foo/create/', status_code=201, method='POST', data=payload)

如果您使用的是Django表单生成的HTML,可以将has_form_error=True作为检查结果HTML中是否存在errorlist的快捷方式

def testCreateFooViewWithoutText(self):
    response = self.assertResponseRenders('/foo/create/', method='POST', has_form_error=True)
    self.assertIn('This field is required.', response.content)

使用assertAPIResponseRenders用于JSON响应。json.loads会自动在响应上调用,因此返回的对象已准备好进行审查

def testFooAPIView(self):
    payload = {'text': 'Hello!'}
    response = self.assertAPIResponseRenders('/foo/', method='POST', data=payload)
    self.assertEquals(response['text'], 'Hello!')

您可以使用assertResponseRedirects来测试重定向

def testFooRedirects(self):
    # /foo/ redirects to /bar/
    self.assertResponseRedirects('/foo/', '/bar/')

如果您有一系列想要验证其渲染为200的视图,而无需添加任何特殊的断言逻辑,您可以简单地重写get200sgetAPI200s方法,这些方法应返回一个URL列表。django-pigeon将构建测试方法,检查渲染所有这些URL是否导致200状态

class FooTestCase(RenderTestCase):

    def get200s(self):
        return [
            '/foo/',
            '/bar/',
            '/foobar/',
        ]

    def getAPI200s(self):
        return [
            '/api/foo/',
        ]

RenderTestCase中实现的大部分功能实际上都在混入类RenderTestCaseMixin中。您可以将RenderTestCaseMixin与其他TestCase类组合,以获得额外的功能。

from django.test import TransactionTestCase
from pigeon.test import RenderTestCaseMixin


class FooTransactionTestCase(RenderTestCaseMixin, TransactionTestCase):

    def testFooView(self):
        ...

django-pigeon支持Python 3.5+和Django 2.2+

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

django-pigeon-0.4.0.tar.gz (4.6 kB 查看散列)

上传时间 源代码

构建分发

django_pigeon-0.4.0-py3-none-any.whl (4.8 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面