按类型检查变量等价性的帮助程序。对测试有用。

type_comparable的Python项目详细描述


关于

模块不仅允许按值,还允许按类型比较变量。

快速示例:

fromtypingimportAnyfromtype_comparableimportmake_type_comparableresponse={'id':144233,'date_create':'2020-01-25T17:31:33.910803','important_data':'important data','other_data':'other data','inner_data':{'field a':'value a','field d':'value b'},'line':[1,'some text',3]}assertmake_type_comparable(response)=={'id':int,# <-- will compare by type int'date_create':str,# < -- will compare by type str'important_data':'important data',# <-- exact match as is'other_data':Any,# <-- allow any data,'inner_date':{# <-- also work with nested dictionaries'field a':str,'field b':'value b'}'line':[int,Any,3]# <- check elements in array}# if you don't want wrap left variable (response) if can wrap right:assertresponse==make_type_comparable(...)

对pytest的测试非常有用。

支撑类型

可比较类型(可传递给make_type_comparable()):

  • int
  • bool
  • str
  • 列表
  • dict
  • 其他

比较类型:

  • 所有python内置(intstrboollistdict等)
  • 对象类型。any表示任何类型,但不表示none
  • 键入。可选-表示任何类型,而可选[int]现在不支持

也可以尝试与自定义类型一起使用,但没有保证(验证 在产品中使用前手动操作)

了解问题

包装的不是:-(

>>make_type_comparable(None)isNoneFalse# use equal>>make_type_comparable(None)==NoneTrue

安装

来自PYPI:

$ pip install type_comparable

来自本地:

# update setuptools
$ pip install 'setuptools >= 30.4'# do install
$ make install
# or
$ pip install .

开发

准备并激活虚拟环境,如:

$ python3 -m venv .env
# for bash
$ source .env/bin/activate
# for fish
$ . .env/bin/activate.fish

更新预安装依赖项:

$ pip install 'setuptools >= 30.4'

安装:

$ make install_dev
# or
$ pip install --editable .[develop]

运行测试:

$ make test# or
$ pytest tests/

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

推荐PyPI第三方库


热门话题
Android Studio中的java Mapbox空白屏幕   java同一类型的多个对象如何同时处理另一类型的对象?   java与ArrayAdapter的斗争   eclipse如何使用JavaSelenium获取每个测试步骤的状态?我想知道测试步骤是通过、失败还是跳过   升级到Spring Boot 1.5.8和Finchley/Edgware Spring Cloud后出现java Faign异常403   java Eclipse显示“Object”而不是var的正确类型   在Java中,声明和初始化Java有什么好处。util。(例如列表)在类的主体中,与仅导入相反的是第一个?   java Flatter无法接受安卓许可证   Javasocket在Heroku上接受匿名/奇怪的socket连接   Java动态组合的设计模式   java如何在Spring中创建默认的可重写组件?   java我可以编写一个应用程序来拍照,而不保存照片并通过usb发送到我的电脑吗?   OutOfMemoryException:使用简单groovy读取11GB XML时出现内存错误,但使用普通JAVA读取时没有错误   java可以将JWT授权从spring RestController传递到外部后端API吗   线性布局中的java项目不适合屏幕   使用java读取excel中的嵌入对象   java在方法中使用抛出是否无用?   java捕获EJB回滚的ApplicationException后如何避免回滚?