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

你可能感兴趣的:(python,总结,pytest,python,自动化,自动化测试)