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

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第三方库


热门话题
java我做不到。用crudepository保存(),在@Id中出错   java如何动态更新属性文件?   用于贪婪量词拆分表达式的正则表达式java查找   使用Leanback库在ListRow中使用java GridView   java如何在不传递引用的情况下公开云端点中的用户?   XML spring配置文件中的java转义双引号   java如何在没有ArrayIndexOutOfBoundsException的情况下添加到数组?   在Java类中调用Kotlin suspend函数   安卓试图在另一个活动“java.lang.IndexOutOfBoundsException:索引:0,大小:0”中显示详细信息   java JasperReports 4。x:如何将JRDocxExporter与旧版本的引擎一起使用   java使用JSP获取文本框值   使用apache DefaultHttpClient执行HttpGet时发生java ClientProtocolException   java在自定义对象的哈希集上迭代会抛出ClassCastException   java使用公历与当前日期进行比较,无需外部类   用于数据库操作的java Spring@Transaction和@Async用法   java如何在resultset中表示列表   java用jackson映射JSON对象   接收到的java代码的correlationID和正文为null