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

如何使用pytest检查不会引发错误

包谭三
2023-03-14
问题内容

假设我们有这样的东西:

import py, pytest

ERROR1 = ' --- Error : value < 5! ---'
ERROR2 = ' --- Error : value > 10! ---'

class MyError(Exception):
    def __init__(self, m):
        self.m = m

    def __str__(self):
        return self.m

def foo(i):
    if i < 5:
        raise MyError(ERROR1)
    elif i > 10:
        raise MyError(ERROR2)
    return i


# ---------------------- TESTS -------------------------
def test_foo1():
    with pytest.raises(MyError) as e:
        foo(3)
    assert ERROR1 in str(e)

def test_foo2():
    with pytest.raises(MyError) as e:
        foo(11)
    assert ERROR2 in str(e)

def test_foo3():
        ....
        foo(7)
         ....

问:如何使test_foo3()进行测试,但不会引发MyError?很明显,我可以测试一下:

def test_foo3():
    assert foo(7) == 7

但我想通过pytest.raises()进行测试。有可能吗?例如:在某种情况下,该函数“ foo”根本没有返回值,

def foo(i):
    if i < 5:
        raise MyError(ERROR1)
    elif i > 10:
        raise MyError(ERROR2)

恕我直言,以这种方式进行测试可能很有意义。


问题答案:

如果测试引发任何意外的异常,则测试将失败。您只需调用foo(7),就可以测试没有引发MyError了。因此,只需满足以下条件:

def test_foo3():
    foo(7)

如果要明确并为此编写断言语句,则可以执行以下操作:

def test_foo3():
    try:
        foo(7)
    except MyError:
        pytest.fail("Unexpected MyError ..")


 类似资料:
  • 嗨,如何检查聚合查询中使用的索引和扫描对象的数量,类似于db.collection.find().explain()?

  • 问题内容: 我正在使用SQL Server,但没有足够的数据集来测试查询的性能。 我想分析查询,看看索引是否被利用。我该如何检查 问题答案: 在SQL Management Studio中,只需键入查询,然后按Control-L(显示查询执行计划)。在那里,您将能够查看是否正在使用任何索引。“表扫描”表示未使用索引。“索引扫描”是指使用索引。

  • 例如:当我通过->不要:它工作正常 但是当我通过->don''t:它不正常工作时,最终输出变成了don'''t 我只想把单引号转换成双引号。我怎么能这么做?

  • 问题内容: 检查表是否存在于MySQL中(最好通过PHP中的PDO)而不抛出异常的最佳方法是什么。我不喜欢解析“ SHOW TABLES LIKE”等的结果。必须有某种布尔查询吗? 问题答案: 我不知道它的PDO语法,但这看起来很简单:

  • 如何使pytest打印回溯,所以我将看到在任何函数中的哪里引发了异常?

  • 问题内容: 我在chrome开发人员控制台中编写了一些随机代码。令我惊讶的是,chrome让我用它作为变量名,因为保留关键字完全不对。我需要了解为什么会这样。 场景: 此缺陷存在于中。但是,当我在Babel REPL中 尝试时,会抛出错误。 我认为这与Google v8有关 问题答案: Mohsen Azimi的这篇文章可以很好地说明其背后的原因。这是它的快速摘要。 以下关键字在JavaScrip