亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 pytest 中每個測試的日志存儲在單獨的文件中

如何將 pytest 中每個測試的日志存儲在單獨的文件中

開心每一天1111 2023-08-22 15:18:16
我在 中有以下代碼conftest.py。它將所有測試的結果存儲到同一個文件中。我想將日志存儲在文件名為 的結果目錄中results/test1_<timestamp>.log。results/test2_<timestamp>.logdef?pytest_configure(config): ????"""?Create?a?log?file?if?log_file?is?not?mentioned?in?*.ini?file""" ????if?not?config.option.log_file: ????????timestamp?=?datetime.strftime(datetime.now(),?'%Y-%m-%d_%H-%M-%S') ????????config.option.log_file?=?'log.'?+?timestamp
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

您可以使用以下方法配置每個測試的日志記錄路徑set_log_path(盡管請注意,文檔認為它是實驗性的):


conftest.py


import os

from datetime import datetime

import pytest


@pytest.hookimpl

def pytest_runtest_setup(item):

    logging_plugin = item.config.pluginmanager.get_plugin("logging-plugin")

    timestamp = datetime.strftime(datetime.now(), '%Y-%m-%d_%H-%M-%S')

    logging_plugin.set_log_path(os.path.join('results', f'{item.name}_{timestamp}.log'))

當然,您必須設置正確的根路徑(我只是將“結果”放在那里)。這將為每個測試創建一個新的日志文件,并相應配置名稱。


您還可以使用該項目的其他屬性來組成文件名。如果您想要路徑中的測試類名稱,如評論中所述,您可以執行以下操作:


...

    path = 'results'

    if item.cls is not None:

        path = os.path.join(path, item.cls.__name__)

    logging_plugin.set_log_path(os.path.join(path, f'{item.name}_{timestamp}.log'))


查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關注
  • 1607 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號