基于Lollipop schema使用Hypothesis生成随机测试数据的库
项目描述
基于Lollipop schema使用Hypothesis生成随机测试数据的库。
示例
from collections import namedtuple
import lollipop.types as lt
import lollipop.validators as lv
import string
EMAIL_REGEXP = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]{2,}\.[a-zA-Z0-9-.]{2,}$"
Email = lt.validated_type(lt.String, 'Email', lv.Regexp(EMAIL_REGEXP))
User = namedtuple('User', ['name', 'email', 'age'])
USER = lt.Object({
'name': lt.String(validate=lv.Length(min=1)),
'email': Email(),
'age': lt.Optional(lt.Integer(validate=lv.Range(min=18))),
}, constructor=User)
import hypothesis as h
import hypothesis.strategies as hs
import lollipop_hypothesis as lh
# Write a test using data generation strategy based on Lollipop schema
@h.given(lh.type_strategy(USER))
def test_can_register_any_valid_user(user):
register(user)
# Configure custom strategy for Email type
lh.register(
Email,
lambda _, type, context=None: \
hs.tuples(
hs.text('abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
'0123456789'
'_.+-', min_size=1),
hs.lists(
hs.text('abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
'0123456789', min_size=2),
min_size=2,
average_size=3,
)
).map(lambda (name, domain_parts): name + '@' + '.'.join(domain_parts)),
)
# Or configure custom strategy for the whole type instance
lh.register(
USER,
lambda registry, type, context=None: \
hs.builds(
User,
name=hs.text(min_size=1),
email=registry.convert(Email(), context),
age=hs.integers(min_value=0, max_value=100),
)
)
安装
$ pip install lollipop-hypothesis # install optional package for regex support $ pip install lollipop-hypothesis[regex]
要求
Python >= 2.7 and <= 3.6
lollipop >= 1.1.3
hypothesis >= 3.8
(可选) hypothesis-regex >= 0.1
项目链接
许可证
MIT许可。有关详细信息,请参阅附带LICENSE文件。
项目详情
关闭
lollipop-hypothesis-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0d8297a89e486037e0908b6dfe7ed1b4475a5642d2cbc48552a174d9a22d9ad1 |
|
MD5 | 3be38f4bcc9c1220a2e7a2e77b70df04 |
|
BLAKE2b-256 | 30591c7e8f0db3ae2437db3bcca96e18beebaf3d8f1900ca9587ec72e70a42e6 |
关闭
lollipop_hypothesis-0.2-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4f97297fbd7d86cb8c814f42535389a8743b43c84b20497465c3b8448bd6e039 |
|
MD5 | 69eb89e51151b8a70a2b6205cf77bce1 |
|
BLAKE2b-256 | d2233b7b5cc5ab64cc096c4bcc61e15b7a91d14ba14f0d9f95267a1074a9eeda |