python的快照测试实用程序

pysnap的Python项目详细描述


pysnaptravispypi

注意:这个项目只是snapshottest包的一个分支,它位于这里:https://github.com/syrusakbary/snapshottest。它基本上被遗弃了,所以我踢了踢轮子,把它恢复了正常的工作状态。欢迎投稿!

快照测试是一种不用编写实际测试就可以测试api的方法。 cases.pip安装doc8

  1. 快照是保存在文件中的API的单个状态。
  2. 您有一组api端点的快照。
  3. 添加新功能后,可以自动生成new 更新的api的快照。
<palign="center">
</p>

安装

$ pip install pysnap

与unittest/nose一起使用

frompysnapimportTestCaseclassAPITestCase(TestCase):deftest_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 example

使用pytest

deftest_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 example

与django一起使用

添加到您的设置:

TEST_RUNNER='pysnap.django.TestRunner'

创建pysnap:

frompysnap.djangoimportTestCaseclassAPITestCase(TestCase):deftest_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 example

贡献

克隆此repo后,请确保通过运行以下命令安装依赖项:

pip install -e ".[test]"

开发完成后,可以通过运行:

py.test

注释

这个包裹在jest snapshot testing中有大量的印痕。

使用此软件包的原因

Most of this content is taken from the Jest snapshot blogpost.

我们想让它尽可能无摩擦地编写好的测试 是有用的。我们注意到当工程师 准备好使用工具后,他们会编写更多的测试 产生稳定健康的代码库。

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

移动应用程序的典型快照测试用例呈现一个ui组件, 截图,然后将其与存储的参考图像进行比较 在测试旁边。如果两个图像不匹配,则测试将失败: 更改是意外的,或者需要更新屏幕截图 到新版本的ui组件。

使用pysnap进行快照测试

在测试api时也可以采用类似的方法。 而不是呈现图形用户界面,这将需要构建 整个应用程序,您可以使用测试呈现程序快速生成 API响应的可序列化值。

许可证

MIT License

coveralls

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java左/右位移位为什么按字节长度移位   java JSoup抓取不断变化的值   多线程在线程之间共享资源,在不同的java版本中有不同的行为   java Spring执行器未映射到localhost:xxxx/activator   java如何正确迭代两个循环   java显示3D地形地图盒v10 Android   java select*进入查询executeUpdate()   java将Excel文件转换为PDF文件   java在Eclipse的自动完成方案中选择方法的排序顺序?   java如何获取列的最后一个值   java如何模拟hadoop文件系统   java读取文件并将其解析为不同的数组   java通过ThreadPoolTaskExecutor或ThreadPoolExecutoryFactoryBean创建线程池?   java Struts2注释不适用于jboss EAP 7   java Servlet会话行为和会话。使无效   java聊天应用程序如何与其服务器通信?