当前位置: 首页 > 面试题库 >

如何参数化Pytest timeline

刁璞
2023-03-14
问题内容

考虑以下Pytest:

import pytest

class TimeLine(object):
    instances = [0, 1, 2]

@pytest.fixture
def timeline():
    return TimeLine()

def test_timeline(timeline):
    for instance in timeline.instances:
        assert instance % 2 == 0

if __name__ == "__main__":
    pytest.main([__file__])

该测试test_timeline使用Pytest固定装置timeline,其本身具有属性instances。在测试中迭代该属性,以便仅在每个instancein的断言均成立的情况下测试才通过timeline.instances

但是,我实际上想做的是生成3个测试,其中2个应该通过,其中1个将失败。我试过了

@pytest.mark.parametrize("instance", timeline.instances)
def test_timeline(timeline):
    assert instance % 2 == 0

但这导致

AttributeError: 'function' object has no attribute 'instances'

据我了解,在Pytest固定装置中,函数“成为”其返回值,但是在对参数进行参数化时,这似乎尚未发生。如何以所需的方式设置测试?


问题答案:

pytest.mark.parametrize
pytest中的 使用固定装置
问题来看,目前似乎无法在中使用固定装置pytest.mark.parametrize



 类似资料:
  • 我对Spring还不熟悉,对它能做些什么还只是初步了解。 在这种情况下,我需要使用注释设置一个循环任务。速率被指定为对象中的成员字段,该对象被传递给封装表示任务的方法的类。 我使用了允许访问配置或环境的机制,例如;这很有效。 我不知道如何做的是将对象中的值插入到中。 例如: 当然,上面的代码不起作用,我只是举一个例子来说明我要做的事情。 如有任何建议,将不胜感激。

  • 问题内容: 您如何访问“工作流程” Jenkins作业的“此构建已参数化”部分中的设置? 测试用例 创建一个工作流作业。 启用“此构建已参数化”。 添加具有默认值的STRING PARAMETER 。 将以下代码添加到: 运行工作。 结果 问题答案: 我认为使用Workflow插件时,变量可以直接使用,而不是通过env。尝试:

  • 我有一个主类——模拟器——它使用另外两个类——生产者和评估者。生产者产生结果,而评估者评估这些结果。模拟器通过查询生产者并将结果传递给评估器来控制执行流程。 Producer和Evaluator的实际实现在运行时已知,在编译时我只知道它们的接口。下面我将粘贴接口、示例实现和模拟器类的内容。 这段代码应该编译并运行。无论选择哪个生产者实现,都应该得到相同的结果(0.82)。 编译器在以下几个地方警告

  • 我有一个类似这样的pytest测试: 现在,作为重构的一部分,我移动了这一行: 放入它自己的夹具中(在conftest.py文件中),因为它在其他地方使用。但是,除了直接导入fixture函数外,是否有其他方法在测试中引用它?我知道funcargs通常是调用fixture的方式,但是在本文中,当我想要调用fixture时,我不在测试函数中。

  • 问题内容: 我在詹金斯(Jenkins)有一份工作,有2个参数。我要运行另一个没有参数的计划,并从该计划中启动所需的现有计划多次。 新计划需要安排为每15分钟运行一次(将由Jenkins的Scheduler选项完成),该计划的代码将: 连接到数据库 获取所需的记录集 开始循环记录集 存储键/值对(现有作业的参数) 结束循环 完成此操作后,我需要对存储的每个键/值对运行现有作业。我可以使用Jenki

  • 问题内容: 我问这个问题有点傻,因为我似乎是世界上唯一一个不了解这个问题的人,但是无论如何,这都是可行的。我将以Python为例。当我使用原始SQL查询(通常使用ORM)时,我会使用参数化,例如使用SQLite的以下示例: 方法A: 我知道这可行,我知道这是通常推荐的方式。SQL注入易受攻击的方式可以执行以下操作: 方法B: 到目前为止,我可以告诉我了解SQL注入,如本Wikipedia文章中所述