pytest实现日志按用例输出到指定文件中

场景

执行自动化用例时,希望日志按用例生成一个文件,并且按用例所在文件生成目录,用例失败时便于查看日志记录

实现方式

  • pytest.ini文件
    在pytest.ini配置文件中设置配置项(定义日志输出级别和格式)
log_cli=true
log_cli_level = DEBUG
log_file_date_format = %Y-%m-%d %H:%M:%S
log_file_format = %(asctime)s %(filename)s:%(funcName)s:%(lineno)d  %(levelname)s:%(message)s
  • conftest.py文件
    设置日志文件路径
import logging

@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_setup(item):   #pytest_runtest_setup是pytest中hook函数,用例执行前都会执行
    file = os.path.basename(item.path) # 获取case所在文件
    logging.info(file)
    config = item.config
    logging_plugin = config.pluginmanager.get_plugin("logging-plugin") #获取logging-plugin,在_pytest/logging.py文件中可以看到此plugin的实现
    full_fname = os.path.join("logs/", file, item._request.node.name + '.log')  #日志文件路径
    logging_plugin.set_log_path(full_fname) #设置日志路径
    yield
  • test_case.py 测试文件
    如下所示编写测试用例, 会在logs文件下生成目录"test_case.py", 并且此目录下会有执行的两个用例的日志文件
import logging
test_data = [{"id": "11111"}, {"id": "2222"}]

@pytest.mark.parametrize("data", test_data,ids=["test1", "test2"])
class TestCase:
    def test_case(self,data):
        logging.inf("test info")
        pass
pytest源码是一个用于收集和执行测试用的工具。它可以通过指定相关配置和命令来定制测试的收集过程。在给定的引用中,我们可以看到一些关于如何收集用的配置。 在中,pytest.ini文件中的addopts选项指定了一些命令行选项,如"-vs"表示输出详细信息,"-m"后面的"smoke"表示只运行标记为"smoke"的测试用。testpaths指定了测试用的路径,python_files、python_classes和python_functions则分别指定了测试文件、测试类和测试函数的命名规则。 在中,我们看到了一个示测试用函数test_new(),它用于测试一个加法操作。在这个子中,我们可以看到使用了pytest.main()函数来执行测试用,并通过传递命令行参数来定制测试执行过程。 所以,根据给定的引用内容,pytest源码可以根据配置文件和命令行参数来收集和执行测试用。通过配置文件中的相关选项,可以指定要收集的测试文件、类和函数的命名规则,并可以通过命令行参数来进一步定制测试执行的方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Pytest框架测试用规则和运行方式](https://blog.youkuaiyun.com/weixin_37600187/article/details/128332154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【温故知新】pytest框架执行用并打印日志和报告](https://blog.youkuaiyun.com/qq_17195161/article/details/126322450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值