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

在pytest测试中记录

冷吉星
2023-03-14
问题内容

我想在测试函数中放入一些日志记录语句,以检查一些状态变量

我有以下代码片段:

import pytest,os
import logging

logging.basicConfig(level=logging.DEBUG)
mylogger = logging.getLogger()

#############################################################################

def setup_module(module):
    ''' Setup for the entire module '''
    mylogger.info('Inside Setup')
    # Do the actual setup stuff here
    pass

def setup_function(func):
    ''' Setup for test functions '''
    if func == test_one:
        mylogger.info(' Hurray !!')

def test_one():
    ''' Test One '''
    mylogger.info('Inside Test 1')
    #assert 0 == 1
    pass

def test_two():
    ''' Test Two '''
    mylogger.info('Inside Test 2')
    pass

if __name__ == '__main__':
    mylogger.info(' About to start the tests ')
    pytest.main(args=[os.path.abspath(__file__)])
    mylogger.info(' Done executing the tests ')

我得到以下输出:

[bmaryada-mbp:/Users/bmaryada/dev/platform/main/proto/tests/tpch $]python minitest.py
INFO:root: About to start the tests 
======================================================== test session starts =========================================================
platform darwin -- Python 2.6.2 -- pytest-2.0.0
collected 2 items

minitest.py ..

====================================================== 2 passed in 0.01 seconds ======================================================
INFO:root: Done executing the tests

请注意,只有来自'__name__ == __main__'块的日志记录消息才被传输到控制台。

是否有一种方法也可以强制pytest从测试方法向控制台发出日志记录?


问题答案:

为我工作,这是我得到的输出:[snip-> example was not正确]

编辑:看来您必须将-s选项传递给py.test,以便它不会捕获stdout。在这里(未安装py.test)就足够了 python pytest.py -s pyt.py

对于你的代码,你需要的是通过-sargsmain

 pytest.main(args=['-s', os.path.abspath(__file__)])

请参阅py.test文档以获取输出。



 类似资料:
  • 在unittest中,我可以在一个类中设置变量,然后这个类的方法可以选择它想要使用的任何变量... 所以在unittest中,很容易将一组测试放在一起,这些测试可以放在一个类下,然后为不同的方法使用许多不同的变量(varA和varB)。在pytest中,我在conftest.py中创建了一个fixture,而不是在unittest中创建了一个类,如下所示。。。 对于两个不同的函数,我在不同的文件中

  • 问题内容: 我正在使用pytest。我的目录中有两个文件。在其中一个文件中,有一个长时间运行的测试用例,它会生成一些输出。在另一个文件中,有一个测试用例读取该输出。如何确保两个测试用例的正确执行顺序?除了以适当的顺序将测试用例放入同一文件之外,还有其他选择吗? 问题答案: 通常,您可以使用其明确指定的hook来配置pytest基本上任何部分的行为。 对于您的情况,您需要“ pytest_colle

  • 当使用 生成覆盖率报告后,我的测试在代码覆盖率报告中显示为100%覆盖,如下所示 我尝试将测试移动到它自己的文件夹中,但仍然会得到相同的结果 实际的单元测试不应该出现在覆盖率报告中,并且扭曲了我的覆盖率。它应该只显示实际程序的覆盖范围。

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

  • 问题内容: 根据测试运行的总体测试结果,我要执行条件拆卸。这意味着必须在执行完所有测试之后但离开测试运行程序之前,才能访问总体测试结果。我该如何实现? 问题答案: 我找不到合适的pytest挂钩来访问总体测试结果。 你不需要一个 自己收集测试结果。这是我需要批量访问测试结果时通常使用的蓝图: 现在所有测试结果都存储在dict下;用法示例: 运行测试将产生: 编辑: 如果总体退出代码()是足够的信息

  • 是否有可能仅在一个测试中更改pytest中的捕获行为- 我有一堆测试,我用。在一些测试中,我喜欢打印几个有用的量,所以我使用标志在输出中显示它们。但是我也测试警告,警告也会打印出来,看起来很难看,很分散注意力。我试着像往常一样使用来不显示警告,但这似乎没有任何作用。(也许破解它???)无论如何,我想要一些方法来平息警告,但仍然检查它们是否被提出,同时还能看到从我的其他打印语句中捕获的输出。有什么方