按类型检查变量等价性的帮助程序。对测试有用。
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内置(int,str,bool,list,dict等)
- 对象和类型。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/