跳转到主要内容

Python的快照测试工具

项目描述

PySnap travis pypi

注意:该项目只是包 snapshottest 的一个分支,它位于这里: https://github.com/syrusakbary/snapshottest。该项目已经被大部分放弃,所以我重新启动了这个项目,并使其恢复正常工作。欢迎贡献!

快照测试是一种测试API而不编写实际测试用例的方法。pip install doc8

  1. 快照是API的单一状态,保存在文件中。

  2. 您有一组API端点的快照。

  3. 一旦您添加了新功能,您可以自动为更新的API生成新的快照。

<p align="center">
</p>

安装

$ pip install pysnap

与unittest/nose一起使用

from pysnap 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 = 'pysnap.django.TestRunner'

创建您的PySnap

from pysnap.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 示例

贡献

克隆此存储库后,通过运行以下命令确保安装了依赖项:

pip install -e ".[test]"

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

py.test

注意事项

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

使用此软件包的原因

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

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

然而,工程师经常花更多的时间编写测试而不是组件本身。结果,许多人完全停止编写测试,最终导致不稳定。

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

使用 PySnap 进行快照测试

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

许可证

MIT 许可证

coveralls

项目详细信息


下载文件

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

源分布

pysnap-1.0.1.tar.gz (13.8 kB 查看哈希)

上传时间

构建分布

pysnap-1.0.1-py2.py3-none-any.whl (27.2 kB 查看哈希)

上传时间 Python 2 Python 3

由以下支持

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