Python Pytest用于在执行测试用例前生成日志文件

import pytest
import time


@ pytest.fixture(scope=" session ", autouse=True)
def manage_logs(request):
    """ Set log file name same as test name """
    now = time.strftime("% Y -% m -% d % H -% M -% S ")
    log_name = './ output / log /' + now + '. logs '
    # 生成日志文件
    request.config.pluginmanager.get_plugin(" logging - plugin ") \
        .set_log_path(log_name)

以上这段代码是一个pytest的fixture,用于在执行测试用例前生成日志文件,并将日志文件路径传递给logging-plugin插件的set_log_path()方法。具体解释如下:

  1. @pytest.fixture是一个装饰器,用于定义一个fixture。fixture是一种用于提供测试用例所需资源的机制,可以在测试用例执行前或执行后进行一些准备或清理操作。

  2. scope="session"设置fixture的作用域为session级别,表示fixture只会在整个测试会话(session)中执行一次。

  3. autouse=True表示所有测试用例都会自动应用这个fixture,不需要在测试用例中显式声明。

  4. now = time.strftime("%Y-%m-%d %H-%M-%S")使用strftime()方法生成当前时间的字符串,用于作为日志文件名的一部分。注意%Y表示4位数的年份,%m表示2位数的月份,%d表示2位数的日期,%H表示24小时制的小时数,%M表示分钟数,%S表示秒数。

  5. log_name = './output/log/' + now + '.logs'拼接日志文件的完整路径,其中./output/log/表示日志文件存放的相对路径,.logs表示日志文件的后缀名。

  6. request.config.pluginmanager.get_plugin("logging-plugin")获取logging-plugin插件的实例。

  7. set_log_path(log_name)logging-plugin插件的一个方法,用于设置日志文件路径。

优化封装:

你可以将这段代码封装成一个函数,以便在其他地方使用。比如:

import pytest
import time


def set_log_path():
    """为测试用例设置日志文件路径"""
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    log_name = './output/log/' + now + '.logs'
    return log_name


@ pytest.fixture(scope="session", autouse=True)
def manage_logs(request):
    """设置日志文件路径,并将其传递给 logging-plugin 插件"""
    log_name = set_log_path()
    request.config.pluginmanager.get_plugin("logging-plugin").set_log_path(log_name)

这样,在其他地方就可以直接调用set_log_path()函数来获取日志文件路径了,而不必每次都写一遍生成日志文件和设置日志文件路径的代码。同时,manage_logs()函数也可以直接使用set_log_path()函数来获取日志文件路径,以保证代码的复用性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SzetoZeZe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值