Python - 使用 pytest 跳过测试,除非指定

2023-11-26

背景

我正在使用 pytest 来测试将数据推送到数据库的网络抓取工具。该类仅拉取 html 并将 html 推送到数据库以供稍后解析。我的大多数测试都使用虚拟数据来表示 html。

Question

我想做一个测试,从网站上抓取网页,但我希望测试自动关闭,除非指定。如果您不想总是运行一项昂贵或耗时的测试,则可能会出现类似的情况。

预期解决方案

我期待某种标记来抑制测试,除非我让 pytest 运行所有抑制的测试,但我在文档中没有看到这一点。

我做了什么

  • 我目前正在使用跳过标记并将其注释掉。
  • 尝试使用skipif标记并在命令提示符下使用此命令向 python 脚本提供参数pytest test_file.py 1以及测试文件中的以下代码。问题是,当我尝试向 test_file 提供参数时,pytest 期望这是另一个文件名,因此我收到错误“0.00 秒内没有运行测试,错误:找不到文件:1”

    if len(sys.argv) == 1:
      RUN_ALL_TESTS = False
    else:
      RUN_ALL_TESTS = True
    ...
    # other tests
    ...
    
    @pytest.mark.skipif(RUN_ALL_TESTS)
    def test_scrape_website():
      ...
    
  • 我也许可以将测试视为固定装置并使用@pytest.fixture(autouse=False),但不确定如何覆盖 autouse 变量

  • 类似的解决方案在如何使用外部夹具跳过 pytest?但这个解决方案似乎比我需要的更复杂。


该文档准确描述了您的问题:https://docs.pytest.org/en/latest/example/simple.html#control-skipping-of-tests-according-to-command-line-option。从那里复制:

这是一个 conftest.py 文件,添加了 --runslow 命令行选项 控制跳过 pytest.mark.slow 标记的测试:

# content of conftest.py

import pytest


def pytest_addoption(parser):
    parser.addoption(
        "--runslow", action="store_true", default=False, help="run slow tests"
    )


def pytest_collection_modifyitems(config, items):
    if config.getoption("--runslow"):
        # --runslow given in cli: do not skip slow tests
        return
    skip_slow = pytest.mark.skip(reason="need --runslow option to run")
    for item in items:
        if "slow" in item.keywords:
            item.add_marker(skip_slow)

我们现在可以编写一个这样的测试模块:

# content of test_module.py
import pytest


def test_func_fast():
    pass


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

Python - 使用 pytest 跳过测试,除非指定 的相关文章

随机推荐

  • 在 JavaScript 中创建多行字符串

    我在 Ruby 中有以下代码 我想把这段代码转换成 JavaScript JS 中的等效代码是什么 text lt lt HERE This Is A Multiline String HERE Update ECMAScript 6 ES
  • 如何在 Eclipse 中关闭 ViewPart?

    我在 Eclipse 中有一个视图 由一个扩展的类实现 org eclipse ui part ViewPart 我需要关闭它 我的意思是完全接近 而不仅仅是隐藏 我希望当用户 或我的代码 要求再次打开视图时创建一个新的 ViewPart
  • Cookie 总是过期的

    我正在设置一个 cookie HttpCookie cookie new HttpCookie simpleorder cookie Expires DateTime Now AddYears 1 cookie order carModel
  • 如何添加网络安全配置以在 Nougat 中启用 Charles 代理 SSL?

    我正在尝试启用Charles Proxy我的 SSLSamsung s8运行于Android Nougat但不知道该怎么做 Before Nougat我能够成功记录我的设备上多个应用程序的查尔斯会话 已关注this and this设置一切
  • 类型错误:Firebase 不是函数

    我正在尝试遵循 firebase Node 教程 https www firebase com docs web quickstart html 我的 node js 应用程序因 TypeError Firebase 不是函数 错误而崩溃
  • C++11 可以判断 std::thread 是否处于活动状态吗?

    令我惊讶的是 一个已完成执行但尚未加入的 C 11 std thread 对象仍然是经过考虑的活动的执行线程 以下代码示例对此进行了说明 在 Xubuntu 13 03 上使用 g 4 7 3 构建 有谁知道 C 11 标准是否提供了一种方
  • MVC DropDownListFor Null 值

    我在 MVC 中使用 htmlhelper 的下拉列表时遇到问题 当回发发生时 没有选择任何内容 并且列表模型中的值和所选项目为空 这是我的模型 namespace MvcTestWebApp Models public class Cus
  • 使用“for”循环对包含数字的数组进行排序

    我是 JavaScript 新手 我有一个包含数字的数组 var arr 2 4 8 1 5 9 3 7 6 我如何使用本地人对其进行排序for loop在 JavaScript 中 我知道排序功能可用 但我希望它通过for loop 输出
  • 如果出现错误,如何使用 try...catch 并让我的脚本停止?

    我试图让我的脚本在遇到错误时停止 并使用 try catch 为我提供一种简单的方法来处理错误 我本以为这是世界上最简单的事情 但我显然在做一些愚蠢的事情 我读了几个小时 但我被困住了 任何帮助都会非常方便 谢谢 这是一些示例代码 我把错误
  • CSS 框上的斜角[重复]

    这个问题在这里已经有答案了 我使用 CSS 的时间很短 我正在尝试制作一个普通的盒子 但左上角以 45 度角切掉 数额也不小 我正在看那个角度的一个相当大的切角 这个效果 我该怎么办 描述 倾斜 http meyerweb com eric
  • Swift 协议继承和通用函数

    考虑以下游乐场 import Foundation protocol StringInitable init string String class A StringInitable var stored String required i
  • 如何在 Apache Spark 中获取上一行的数据

    从 Spark Data 框架中查找每个城市上个月的销售情况 City Month Sale c1 JAN 2017 49 c1 FEB 2017 46 c1 MAR 2017 83 c2 JAN 2017 59 c2 MAY 2017 6
  • ServiceStack没有服务器端异步支持

    我的一个朋友告诉我他过去看过 ServiceStack 说它看起来不错 但没有异步支持 所以在他的书中 它不是使用这个框架的选项 如果没有异步就不好 我必须同意 除非ServiceStack添加了异步 否则不确定这对我来说是否是一个不错的选
  • 使用 Async 和 Await 的 ASP.NET C#5 异步 Web 应用程序

    研究了异步 Web 开发的概念 特别是来自this来源 我创建了一个示例应用程序来证明这个概念 该解决方案由 2 个 ASP NET Web API 应用程序组成 第一个是模拟的慢端点 它等待 1000 毫秒 然后返回一个名为 Studen
  • 突出显示 HTML 文本中的单词(但不是标记)

    我试图突出显示正文内的所有匹配单词 但不突出显示任何 html 标记内的单词 例如 给出的关键字是 para 这是该段落 p class para Example of paragraph Lorem ipsum dolor sit ame
  • 课程末尾的美元符号在 Eclipse MAT 中意味着什么?

    我正在使用 Eclipse MAT 尝试追踪 Android 中的资源泄漏 如果您经常更改屏幕方向 当我转到直方图视图时 我看到我的活动与一次又一次列出的相同活动一起列出 并带有 在它之后 So like com test TestActi
  • 将“rlang”准引用与“dplyr::_join”函数一起使用

    我正在尝试编写一个我使用的自定义函数rlang的准引用 该函数内部也使用dplyr s join功能 我在下面提供了一个最小的工作示例来说明我的问题 needed libraries library tidyverse function d
  • 打印 html 文档时所有页面中的 HTML 页眉和页脚

    我创建了一个带有页眉 一些内容和页脚的 html 页面 我尝试打印 HTML 页面 结果有 2 页 我在第一页得到了页眉 在最后一页得到了页脚 我真正需要的是在所有页面中显示页眉和页脚 就像在 Word 文档中一样 我查了一下 发现使用th
  • 如何使用 Android 数据绑定动态更改视图可见性

    我正在尝试使用数据绑定实现一种简单的视图隐藏 显示 我有一个 api 调用 并且在 api 调用正在进行时我必须显示一个进度条 一旦我收到响应 就必须忽略此进度并显示数据 我尝试使用数据绑定动态更改进度条的可见性 但什么也没发生 仅在第一次
  • Python - 使用 pytest 跳过测试,除非指定

    背景 我正在使用 pytest 来测试将数据推送到数据库的网络抓取工具 该类仅拉取 html 并将 html 推送到数据库以供稍后解析 我的大多数测试都使用虚拟数据来表示 html Question 我想做一个测试 从网站上抓取网页 但我希