跳转到主要内容

pytest、unittest、Django和Nose的快照测试

项目描述

快照测试 travis pypi

快照测试是一种在不编写实际测试用例的情况下测试您的API的方法。

  1. 快照是API的单一状态,保存在文件中。
  2. 您有一组API端点的快照。
  3. 一旦您添加了新功能,您可以为更新后的API自动生成新的快照。

安装

$ pip install snapshottest

与unittest/nose一起使用

from snapshottest import TestCase

class APITestCase(TestCase):
    def test_api_me(self):
        """Testing the API for /me"""
        my_api_response = api.client.get('/me')
        self.assertMatchSnapshot(my_api_response)

        # Set custom snapshot name: `gpg_response`
        my_gpg_response = api.client.get('/me?gpg_key')
        self.assertMatchSnapshot(my_gpg_response, 'gpg_response')

如果您想自动更新快照,可以使用nosetests --snapshot-update

查看Unittest示例

与pytest一起使用

def test_mything(snapshot):
    """Testing the API for /me"""
    my_api_response = api.client.get('/me')
    snapshot.assert_match(my_api_response)

    # Set custom snapshot name: `gpg_response`
    my_gpg_response = api.client.get('/me?gpg_key')
    snapshot.assert_match(my_gpg_response, 'gpg_response')

如果您想自动更新快照,可以使用--snapshot-update配置。

查看Pytest示例

与django一起使用

添加到您的设置中

TEST_RUNNER = 'snapshottest.django.TestRunner'

创建您的snapshottest

from snapshottest.django import TestCase

class APITestCase(TestCase):
    def test_api_me(self):
        """Testing the API for /me"""
        my_api_response = api.client.get('/me')
        self.assertMatchSnapshot(my_api_response)

如果您想自动更新快照,可以使用python manage.py test --snapshot-update。查看Django示例

禁用终端颜色

设置环境变量ANSI_COLORS_DISABLED(任何值),例如

ANSI_COLORS_DISABLED=1 pytest

贡献

在克隆此存储库并为snapshottest配置虚拟环境(可选,但强烈推荐)后,通过运行以下命令确保安装了依赖项:

make install

开发后,可以通过运行以下命令评估完整的测试套件:

make lint
# and
make test

注意

此包深受jest快照测试的启发。

使用此包的原因

大部分内容来自Jest快照博客文章

我们希望尽可能减少编写有用测试的摩擦。我们观察到,当工程师获得现成的工具时,他们会编写更多的测试,这反过来又导致了稳定且健康的代码库。

然而,工程师通常花在编写测试上的时间比组件本身还多。结果,许多人完全停止编写测试,最终导致了不稳定性。

对于移动应用,典型的快照测试用例将渲染UI组件,捕获屏幕截图,然后将其与存储在测试旁边的参考图像进行比较。如果两个图像不匹配,则测试将失败:要么变化是意外的,要么需要将屏幕截图更新到UI组件的新版本。

使用SnapshotTest进行快照测试

在测试API时,可以采取类似的方法。您不需要渲染图形UI,因为这需要构建整个应用程序,而是可以使用测试渲染器快速为API响应生成可序列化的值。

许可

MIT许可

coveralls

项目详细信息


下载文件

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

源分发

snapshottest-0.6.0.tar.gz (22.6 kB 查看哈希值)

上传

构建分发

snapshottest-0.6.0-py2.py3-none-any.whl (16.5 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持

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