用Python编写的灵活的成对工具。
项目描述
需求
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:
根据对和种子的哈希生成组合。(默认)
它接收 seed 和 useCache 选项。
seed 选项决定了未存储对存储的顺序,因此当因素数量和种子相同时,每次输出的结果都相同。
useCache 选项决定是否使用哈希缓存。(默认:true)
它比将 useCache 设置为 off 快约 10%。
标准
- criteria.simple:
这会提取任何可以存储到处理行的对。
- criteria.greedy:
这尝试制作最有效的组合。(默认)
这些组合不一定比 simple 标准短。
它接收 tolerance 选项。
预过滤
这意味着一个预先过滤的函数。
它接收一个类型为 object 的 row 参数。
当函数返回 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 查看散列)