使用 py.test 在 Python 中测试正则表达式

2024-02-28

正则表达式对我来说仍然是一门黑暗艺术,但我认为这是需要练习的事情之一。因此,我更关心能够生成 py.test 函数来显示我的正则表达式失败的地方。我当前的代码是这样的:

my_regex = re.compile("<this is where the magic (doesn't)? happen(s)?>")

def test_my_regex():
    tests = ["an easy test that I'm sure will pass",
             "a few things that may trip me up",
             "a really pathological, contrived example",
             "something from the real world?"]

    test_matches = [my_regex.match(test) for test in tests]

    for i in range(len(tests)):
        print("{}: {!r}".format(i, tests[i]))
        assert test_matches[i] is not None

我运行时的输出py.test myfile.py是这样的

0: "an easy..."
1: "a few things..."
2: "a really pathological..."

其中最后一个是第一个(唯一?)一个未通过测试的。

我想我可以做类似的事情

assertSequenceEqual(test_matches, [not None]*len(test_matches))

但这看起来很恶心,我的印象是<object> is not None是检查对象是否存在的首选方法None而不是<object> != None.


另一种方法是使用参数化 https://pytest.org/latest/example/parametrize.html.

my_regex = re.compile("<this is where the magic (doesn't)? happen(s)?>")

@pytest.mark.parametrize('test_str', [
    "an easy test that I'm sure will pass",
    "a few things that may trip me up",
    "a really pathological, contrived example",
    "something from the real world?",
])
def test_my_regex(test_str):
     assert my_regex.match(test_str) is not None

这将为每个测试字符串生成一个独立的测试用例。这个 IMO 更干净,更容易添加新案例,并且还具有允许每个案例的优点test_str个人失败而不影响其他人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 py.test 在 Python 中测试正则表达式 的相关文章

随机推荐

  • SwiftUI 中 ObservedObject 和 StateObject 有什么区别

    如果我有一个ObservableObject在 SwiftUI 中我可以将其称为 ObservedObject class ViewModel ObservableObject Published var someText Hello Wo
  • 如何轻松分析 Oracle 包的执行是否存在性能问题?

    我在 11g R2 DB 中有一个 pl sql 包 它有相当多的相关过程和函数 我执行一个顶级函数 它做了很多事情 当前每秒处理 对于 Oracle 的 PL SQL 分层分析器 DBMS HPROF 来说 这似乎是一项不错的工作 作为一
  • 优化 iPhone OpenGL ES 填充率

    我的 iPhone 上有一个 Open GL ES 游戏 我的帧率很糟糕 20fps 在 iPhone 3G 上使用 Xcode OpenGL ES 性能工具 它显示 渲染器利用率 95 至 99 瓷砖利用率 27 我正在绘制很多非常大的图
  • 随机迭代所有排列

    我导入了一个大数组 我想随机迭代所有行排列 该代码被设计为在某个数组产生所需的解决方案时中断 到目前为止的尝试涉及正常的迭代扰动过程 import numpy as np import itertools file np loadtxt m
  • 单击按钮后程序停止响应

    我正在尝试制作我的第一个程序 一个端口扫描器 显示远程服务器上的所有开放端口 我已经让它在 CLI 中工作 感谢互联网 但决定制作一个 GUI Qt5 它 我希望textbox2在输入IP地址并单击 扫描 后输出所有打开的端口 并且显然程序
  • User.Identity.IsAuthenticated 与 WebSecurity.IsAuthenticated

    在 MVC4 应用程序中 在控制器逻辑中 我想检查用户是否已登录 我应该使用 User Identity IsAuthenticated Or WebSecurity IsAuthenticated 据我所知WebSecurity只是一个包
  • 显示 kivy 滑块值的变化 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否可以将 kivy 微调器值显示为移动标签 以便用户确切地知道滑块的当前值是什么 Thanks 您只需将侦听器绑定到值更改事件
  • Flowtype 函数可能会抛出错误

    有什么方法可以明确定义函数可以抛出错误 显然任何函数都可以抛出错误 但我想明确定义一个函数被设计为抛出并且可能根本不返回值 async function falseThrow promise Promise
  • 如何根据 NSString 类型键测试属性是否存在和类型?

    在我寻求更新 iOS 项目中的核心数据模型时 我在服务器上查询 JSON 对象 这些对象在某种程度上与我的模型的托管实体相对应 我追求的最终结果是从 JSON 输出获得可靠的更新解决方案 对于这个问题中的示例 我将命名核心数据管理对象exi
  • 将 Mongo 中的某些字段从字符串转换为数组

    我有一个文档集合 其中 标签 字段从空格分隔的标签列表切换为单个标签数组 我想将以前的空格分隔字段更新为像新传入数据一样的数组 我也遇到了 type 选择器的问题 因为它将类型操作应用于单个数组元素 即字符串 因此按类型过滤只会返回所有内容
  • SQL 排除包含按分组最大值过滤的几乎重复值的行

    我有一张这样的桌子 ID User ID Skill Skill Level Skill ID 1 1 Project Manager 3 1 2 4 Teacher 6 2 3 2 Teacher 5 2 4 3 Administrato
  • 具有不同主键的 Hibernate 继承

    我正在尝试使用 TABLE PER CLASS 策略创建继承 但我想为每个表使用不同的主键 这可能吗 我有一个类 Register 它有数百万个实例 其中一些实例是 特殊的 并且它们的列和额外列有不同的规则 MappedSuperclass
  • VB6.dll获取调用应用程序路径

    我正在从 VB6 制作一个 dll 我需要知道将使用该 dll 的应用程序的路径 但我不知道如何执行此操作直接来自 dll 有人知道该怎么做吗 先感谢您 嗯 这似乎可以作为 DLL 工作 Option Explicit Private Co
  • &&评估问题

    据我所知 逻辑上 工作原理如下 var test false var foo test 42 这段代码 将分配42 to foo only如果第一个条件被评估为true 所以在这个例子中 foo将保持其当前值 我想知道为什么这个片段根本不起
  • “死内核”Anaconda-Jupyter 紧贴 C++ Windows

    我新安装了 Anaconda v 4 3 1 并使用 conda 命令在 Jupyter 上安装 C 内核的 cling 我用了conda install c conda forge cling 0 3 post 我使用的是 Windows
  • 将全天活动添加到 Google 日历的链接

    所以我看了看添加到 Google 日历的链接 https stackoverflow com questions 10488831 link to add to google calendar 但我想对全天活动做同样的事情 我试过做date
  • ExecutorService,如何知道所有线程何时完成而不阻塞主线程?

    我有一个多线程实现 我创建一个 ExecutorService 并提交要执行的任务 我想知道所有线程何时提交完成而不阻塞主线程和 UI 我试过了ExecutorService awaitTermination 但它会阻塞主线程和 UI 我已
  • 双线性插值

    我得到了通过双线性插值缩放图像的代码 我知道这是可行的 但我无法弄清楚如果近似像素值是边缘 边缘我的意思是它在最后一行或最后一列 像素中的一件事会怎样输入图像然后我可以 gt 坐标 x 1 y 1 的像素 这应该会导致数组索引超出范围错误
  • 如何将数组缓冲区数据与 string/json 一起发送到 NodeJS 服务器

    我需要在一个请求中将客户端页面的图像数据 作为数组缓冲区读取 以及页面生成的附加字符串 json 信息发送到 NodeJS 服务器 我需要在一个请求中处理这两个部分 因为服务器的进一步图像处理取决于发送的字符串 json 有哪些方法可以由客
  • 使用 py.test 在 Python 中测试正则表达式

    正则表达式对我来说仍然是一门黑暗艺术 但我认为这是需要练习的事情之一 因此 我更关心能够生成 py test 函数来显示我的正则表达式失败的地方 我当前的代码是这样的 my regex re compile