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

如何在运行时访问pytest测试的总体测试结果?

费秦迟
2023-03-14
问题内容

根据pytest测试运行的总体测试结果,我要执行条件拆卸。这意味着必须在执行完所有测试之后但离开测试运行程序之前,才能访问总体测试结果。我该如何实现?


问题答案:

我找不到合适的pytest挂钩来访问总体测试结果。

你不需要一个 自己收集测试结果。这是我需要批量访问测试结果时通常使用的蓝图:

# conftest.py
import pytest


def pytest_sessionstart(session):
    session.results = dict()


@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
    outcome = yield
    result = outcome.get_result()

    if result.when == 'call':
        item.session.results[item] = result

现在所有测试结果都存储在session.resultsdict下;用法示例:

# conftest.py (continued)

def pytest_sessionfinish(session, exitstatus):
    print()
    print('run status code:', exitstatus)
    passed_amount = sum(1 for result in session.results.values() if result.passed)
    failed_amount = sum(1 for result in session.results.values() if result.failed)
    print(f'there are {passed_amount} passed and {failed_amount} failed tests')

运行测试将产生:

$ pytest -sv
================================== test session starts ====================================
platform darwin -- Python 3.6.4, pytest-3.7.1, py-1.5.3, pluggy-0.7.1 -- /Users/hoefling/.virtualenvs/stackoverflow/bin/python3.6
cachedir: .pytest_cache
rootdir: /Users/hoefling/projects/private/stackoverflow/so-51711988, inifile:
collected 3 items

test_spam.py::test_spam PASSED
test_spam.py::test_eggs PASSED
test_spam.py::test_fail FAILED
run status code: 1
there are 2 passed and 1 failed tests


======================================== FAILURES =========================================
_______________________________________ test_fail _________________________________________

    def test_fail():
>       assert False
E       assert False

test_spam.py:10: AssertionError
=========================== 1 failed, 2 passed in 0.05 seconds ============================

编辑:

如果总体pytest退出代码(exitstatus)是足够的信息(有关#通过,#失败等信息,则不是必需的),请使用以下代码:

# conftest.py

def pytest_sessionfinish(session, exitstatus):
    print()
    print('run status code:', exitstatus)


 类似资料:
  • 就像 会编译代码并运行生成的二进制文件一样,cargo test 在测试模式下编译代码并运行生成的测试二进制文件。可以指定命令行参数来改变 cargo test 的默认行为。例如,cargo test 生成的二进制文件的默认行为是并行的运行所有测试,并捕获测试运行过程中产生的输出避免他们被显示出来,使得阅读测试结果相关的内容变得更容易。 这些选项的一部分可以传递给 cargo test,而另一些则

  • 正如前面提到的,connectedCheck 需要一个已连接设备。这个过程依赖于 connectedDebugAndroidTest task,因此 connectedDebugAndroidTest task 也会运行。该 task 会执行以下内容: 确认应用和测试应用已被构建(依赖于 assembleDebug 和 assembleDebugAndroidTest) 安装这两个应用 运行测试

  • 5.2 运行测试 正如前面所提到的,引导任务 connectedCheck 需要一个已经连接的设备才能运行。 这会依赖 androidTest ,所以 androidTest 也会被运行。这个任务做了以下事情: 确保应用和测试应用已经被构建(依赖 assembleDebug 和 assembleTest ) 安装这两个应用 运行测试 卸着这两个应用 如果同时有多个连接的设备,那么所有的测试会在所有

  • 如何通过不同的测试数据在Playwright测试运行测试?比如从CSV文件发送测试数据?

  • 本文向大家介绍如何在pytest中的一组测试中对选定的测试进行分组?,包括了如何在pytest中的一组测试中对选定的测试进行分组?的使用技巧和注意事项,需要的朋友参考一下 我们可以从pytest中的一组测试中对选定的测试进行分组.pytest是python中的一个测试框架。要安装pytest,我们需要使用命令pip install pytest。安装后,我们可以通过pytest –version命

  • 问题内容: 我正在使用带有eclipse的junit编写功能测试。 当运行单个测试时,它将按照我在类中设置它们的顺序运行。 例如。 但是,当我将此测试作为套件的一部分运行时(在包中),顺序是随机的。 例如,它将执行验证,然后删除用户,然后删除joinuserToRoom然后创建用户。 我在套件中的测试并不相互依赖。但是,测试中的每个单独测试都取决于它们以正确的顺序运行。 有什么办法可以实现? 谢谢