跳转到主要内容

用Python编写的灵活的成对工具。

项目描述

https://badge.fury.io/py/covertable.svg https://github.com/walkframe/covertable/actions/workflows/python.yaml/badge.svg https://codecov.io/gh/walkframe/covertable/branch/master/graph/badge.svg https://img.shields.io/badge/code%20style-black-000000.svg https://img.shields.io/badge/License-Apache%202.0-blue.svg

需求

  • Python: 3.3或更高版本。

    • 已测试3.7, 3.11

安装

$ pip install covertable

用法

只需导入covertable并调用make函数。

>>> from covertable import make, sorters, criteria

>>> machine_list = ['iphone', 'pixel']
>>> os_list = ['ios', 'android']
>>> browser_list = ['FireFox', 'Chrome', 'Safari']
>>> # list input and output
>>> make(
...     [machine_list, os_list, browser_list],  # list factors
...     length=2,  # default: 2
...     sorter=sorters.random,  # default: sorters.hash
...     criterion=criteria.simple,  # default: criteria.greedy
...     seed=100,  # default: ''
...     pre_filter=lambda row: not(row[1] == 'android' and row[0] != 'pixel') and not(row[1] == 'ios' and row[0] != 'iphone'),  # default: None
... )
[
  ['pixel', 'android', 'Safari'],
  ['iphone', 'ios', 'Chrome'],
  ['iphone', 'ios', 'Safari'],
  ['pixel', 'android', 'Chrome'],
  ['pixel', 'android', 'FireFox'],
  ['iphone', 'ios', 'FireFox']
]


>>> # dict input and output
>>> make(
...     {'machine': machine_list, 'os': os_list, 'browser': browser_list},  # dict factors
...     length=2,  # default: 2
...     tolerance=3,  # default: 0
...     post_filter=lambda row: not(row['os'] == 'android' and row['machine'] != 'pixel') and not(row['os'] == 'ios' and row['machine'] != 'iphone'),  # default: None
... )
[
  {'machine': 'pixel', 'browser': 'Chrome', 'os': 'android'},
  {'machine': 'pixel', 'browser': 'FireFox', 'os': 'android'},
  {'machine': 'iphone', 'os': 'ios', 'browser': 'Chrome'},
  {'os': 'ios', 'browser': 'FireFox', 'machine': 'iphone'}
]

选项

covertable.make函数有选项作为关键字参数。

所有选项都是可省略的。

length

要覆盖的因子的数量。(默认值:2)

显然,它增加得越多,组合的数量就越多。

sorter

组合取决于所有行上排列的顺序。

您可以从以下选项中选择排序器

sorters.random:

每次都会生成不同的组合。(最快)

sorters.hash:

根据对和种子的哈希生成组合。(默认)

  • 它接收 seeduseCache 选项。

    • seed 选项决定了未存储对存储的顺序,因此当因素数量和种子相同时,每次输出的结果都相同。

    • useCache 选项决定是否使用哈希缓存。(默认:true

      • 它比将 useCache 设置为 off 快约 10%。

标准

criteria.simple:

这会提取任何可以存储到处理行的对。

criteria.greedy:

这尝试制作最有效的组合。(默认)

  • 这些组合不一定比 simple 标准短。

  • 它接收 tolerance 选项。

预过滤

这意味着一个预先过滤的函数。

它接收一个类型为 objectrow 参数。

当函数返回 False 时,行组合将不会被注册。

  • 如果因素类型是 Array,你应该在索引中指定一个下标,例如 row => row[1] < 6

  • 如果因素类型是 Object,你应该在索引中指定一个键,例如 row => row['month'] < 6

后过滤

这意味着一个后期过滤的函数。

用法与 preFilter 相同,只是调用时间不同。它将在最后删除不匹配此函数的行。

因此,最终的测试用例可能不满足因素覆盖率。

开发

# preparation
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install -r dev_requirements.txt

# testing
(venv) $ pytest

发布

(venv) $ python setup.py sdist bdist_wheel
(venv) $ twine upload --repository pypi dist/*

更多信息

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

covertable-2.1.0.tar.gz (7.9 kB 查看散列)

上传时间

构建分布

covertable-2.1.0-py3-none-any.whl (7.1 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面