跳转到主要内容

Hypothesis扩展,允许基于正则表达式生成字符串

项目描述

License: MIT Build Status PyPI

Hypothesis扩展,允许基于正则表达式生成字符串。如果您有一些模式(例如JSON模式)已经具有验证数据的正则表达式,这将很有用。

示例

from hypothesis_regex import regex
import requests
import json

EMAIL_REGEX = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]{2,}\.[a-zA-Z0-9-.]{2,}$"

@given(regex(EMAIL_REGEX))
def test_registering_user(email):
    response = requests.post('/signup', json.dumps({'email': email}))
    assert response.status_code == 201

功能

正则表达式策略返回始终与给定正则表达式匹配的字符串(此检查由过滤器强制执行),并且它试图以有效的方式进行,以过滤掉更少的生成示例。然而,某些正则表达式构造可能会降低策略效率,因此应谨慎使用

  • 字符串中间的“^”和“$” - 不做任何事情。

  • “\b”和“\B”(单词边界和不是单词边界) - 不做任何事情,而是仅依赖顶层正则表达式匹配过滤器来过滤掉不匹配的示例。

  • 正向先行断言和先行断言仅生成它们应该匹配的数据(就像它是前一个/后一个部分的一部分一样)。

  • 负向先行断言和先行断言不做任何事情,因此它依赖于前一个/后一个部分来生成正确的字符串(否则示例将被过滤掉)。

  • “(?(id)yes-pattern|no-pattern)”实际上并不检查具有给定ID的组是否确实被使用,而是仅生成yes-或no-pattern。

正则表达式策略试图对生成的数据进行疯狂处理(例如,字符串末尾的“$”可能不生成任何内容或生成换行)。其想法不是生成看起来很漂亮的字符串,而是任何疯狂的意外组合,这些组合仍然可以匹配给定的正则表达式,这样您就可以为它们做好准备,并以最合适的方式处理它们。

您可以使用正则表达式标志来获得更多控制策略

  • re.IGNORECASE - 字面量或字面量范围同时生成小写和大写字母。例如 r'a' 将生成 “a”“A”,或者 ‘[a-z]’ 将生成小写和大写英文字符。

  • re.DOTALL - “.” 字符将能够生成换行

  • re.UNICODE - 字符类别(“\w”、“\d” 或 “\s”及其否定)将生成 Unicode 字符。这是 Python 3 的默认值,请参阅 re.ASCII 以反转它。

有两种方法可以传递正则表达式标志

  1. 通过传递具有该标志的编译正则表达式:regex(re.compile(‘abc’,re.IGNORECASE))

  2. 通过使用内联标志语法:regex(‘(?i)abc’)

安装

$ pip install hypothesis-regex

要求

许可证

MIT 许可。有关更多详细信息,请参阅捆绑的 LICENSE 文件。

项目详细信息


下载文件

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

源分布

hypothesis-regex-0.3.1.tar.gz (9.2 kB 查看哈希值)

上传时间

构建分布

hypothesis_regex-0.3.1-py2.py3-none-any.whl (9.0 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

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