pytest、unittest、Django和Nose的快照测试
项目描述
快照测试

快照测试是一种在不编写实际测试用例的情况下测试您的API的方法。
- 快照是API的单一状态,保存在文件中。
- 您有一组API端点的快照。
- 一旦您添加了新功能,您可以为更新后的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响应生成可序列化的值。
许可
项目详细信息
下载文件
下载您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源分发
snapshottest-0.6.0.tar.gz (22.6 kB 查看哈希值)
构建分发
snapshottest-0.6.0-py2.py3-none-any.whl (16.5 kB 查看哈希值)
关闭
snapshottest-0.6.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bbcaf81d92d8e330042e5c928e13d9f035e99e91b314fe55fda949c2f17b653c |
|
MD5 | d9cdbe189ddab8d7bb2505ecd5c84044 |
|
BLAKE2b-256 | 146a6a6ff192326d79048f44c9348acad760070cce68f9fc9c9832c3efa7aca8 |
关闭
snapshottest-0.6.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9b177cffe0870c589df8ddbee0a770149c5474b251955bdbde58b7f32a4ec429 |
|
MD5 | 56b2e7579cf37d3b2fe0cd2ef3791fbc |
|
BLAKE2b-256 | c9d99527f609c28b508043edf587d03f96b8621ae4adaa4480197347cb640d0e |