Python的快照测试工具
项目描述
PySnap

注意:该项目只是包 snapshottest 的一个分支,它位于这里: https://github.com/syrusakbary/snapshottest。该项目已经被大部分放弃,所以我重新启动了这个项目,并使其恢复正常工作。欢迎贡献!
快照测试是一种测试API而不编写实际测试用例的方法。pip install doc8
快照是API的单一状态,保存在文件中。
您有一组API端点的快照。
一旦您添加了新功能,您可以自动为更新的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 响应的可序列化值。
许可证
项目详细信息
下载文件
下载适合您平台的项目。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。