首页 > 其他分享 >WEB自动化-Allure报告-添加日志内容到Allure报告

WEB自动化-Allure报告-添加日志内容到Allure报告

时间:2023-08-12 16:55:21浏览次数:34  
标签:WEB allure driver pytest 用例 Allure report import 日志

如果想把LOG内容输出到Allure报告,步骤如下:

1、创建pytest.ini文件,设置规则

 2、创建conftest文件,设置driver和日志封装及截图

# 浏览器驱动
import logging

import allure
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


@pytest.fixture()
def browser():
    # 01 用例前置操作
    global driver
    # selenium提供的浏览器的无头模式(在后台运行的), --headless
    # chrome_options = Options()
    # chrome_options.add_argument('--headless')
    # driver = webdriver.Chrome(options=chrome_options)
    driver = webdriver.Chrome()

    # 02 用例执行,返回driver
    yield driver

    # 03 用例后置,关闭浏览器
    driver.quit()


# 日志封装:1
# 日志的模块封装?
# hookwrapper=True 参数允许该函数包装 pytest 钩子,并在调用钩子之前和之后执行代码
# tryfirst=True 参数指定该钩子应在其他钩子之前执行
# @pytest.hookimpl(hookwrapper=True, tryfirst=True)
# def pytest_runtest_makereport(item, call):
#     out = yield
#     report = out.get_result()
#     if report.when == 'call':
#         logging.info(f"用例ID:{report.nodeid}")
#         logging.info(f"测试结果:{report.outcome}")
#         logging.info(f"故障表示:{report.longrepr}")
#         logging.info(f"异常:{call.excinfo}")
#         logging.info(f"用例耗时:{report.duration}")
#         logging.info("**************************************")

# 日志封装:2
@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_makereport(item, call):
    out = yield
    report = out.get_result()
    if report.when == "call":
        # 需要安装pip install pytest-allure-adaptor
        allure.attach(f"用例ID:{report.nodeid}", name="用例ID")
        allure.attach(f"测试结果:{report.outcome}", name="测试结果")
        allure.attach(f"故障表示:{report.longrepr}", name="故障表示")
        allure.attach(f"异常:{call.excinfo}", name="异常")
        allure.attach(f"用例耗时:{report.duration}", name="用例耗时")
        # 获取用例call执行结果为失败的情况
        xfail = hasattr(report, "wasxfail")
        if (report.skipped and xfail) or (report.failed and not xfail):
            # 添加allure报告截图
            with allure.step("添加失败截图......"):
                # 使用allure自带的添加附件的方法,三个参数分别为:源文件、文件名、文件类型
                allure.attach(driver.get_screenshot_as_png(),
                              "失败截图", allure.attachment_type.PNG)
        else:
            # 添加allure报告截图
            with allure.step("添加成功截图......"):
                # 使用allure自带的添加附件的方法,三个参数分别为:源文件、文件名、文件类型
                allure.attach(driver.get_screenshot_as_png(),
                              "成功截图", allure.attachment_type.PNG)
View Code

3、创建测试用例文件

import time

import allure
from selenium.webdriver.common.by import By


@allure.title("这是一条失败的用例 - 01")
def test_baidu(browser):
    driver = browser
    driver.get("http://www.baidu.com")
    driver.find_element(By.ID, 'kw').send_keys("狗狗币")
    driver.find_element(By.ID, 'su').click()
    time.sleep(3)
    assert driver.title == "狗狗币_百度搜索"
    allure.dynamic.title("这是一条成功的测试用例 - 01")


@allure.title("这是一条失败的用例 - 02")
def test_baidu2(browser):
    driver = browser
    driver.get("http://www.baidu.com")
    driver.find_element(By.ID, 'kw').send_keys("狗狗币")
    driver.find_element(By.ID, 'su').click()
    time.sleep(3)
    assert driver.title == "七夜的狗狗币_百度搜索"
    allure.dynamic.title("这是一条成功的测试用例 - 02")


# 休息:21:29
View Code

4、执行main文件

 5、查看报告

 

标签:WEB,allure,driver,pytest,用例,Allure,report,import,日志
From: https://www.cnblogs.com/gezirui/p/17625036.html

相关文章

  • WebSocket
    在搭建聊天室时,选择使用TCP请求而不是HTTP请求是因为TCP(传输控制协议)和HTTP(超文本传输协议)具有不同的特性,适用于不同的场景。以下是选择TCP请求而不是HTTP请求的一些原因:即时性:TCP是一种面向连接的协议,它在客户端和服务器之间建立稳定的双向通信通道。这种连接可以保持长时间,使......
  • Web信息收集步骤
    Web信息收集步骤利用浏览器查看所有页面,并且检查页面源代码,注意备注信息以及可以链接/robots.txtNikto工具扫描Web技术架构以及可能存在的目录或者文件,并且可能可以直接给出漏洞Gobuster,dirb,dirsearch,并且利用各个主要的wordlist不能忘记nmap的http脚本......
  • 山东布谷科技直播软件开发WebRTC技术:建立实时通信优质平台
    在数字化的时代,实时通信成为了人们远程交流的主要方式,目前市场上也出现了很多带有实时通信交流的软件,实时通信符合人们现在的需求,所以在直播软件开发过程中,开发者也运用了实时通信技术为直播软件加入了实时通信的能力,这个技术就是WebRTC技术。WebRTC技术通过实现点对点的音视频传输......
  • 山东布谷科技直播软件开发WebRTC技术:建立实时通信优质平台
    在数字化的时代,实时通信成为了人们远程交流的主要方式,目前市场上也出现了很多带有实时通信交流的软件,实时通信符合人们现在的需求,所以在直播软件开发过程中,开发者也运用了实时通信技术为直播软件加入了实时通信的能力,这个技术就是WebRTC技术。WebRTC技术通过实现点对点的音视频传......
  • go项目实现mysql接入以及web api
    创建go项目,并在go项目中接入mysql,将mysql的配置项单独整理放到一个胚子和文件中,支持项目启动时,通过加载配置文件中的值,然后创建数据库连接。之后使用net/http相关的库,创建路由,并在路由中通过不同的http方法,实现mysql连接的test数据库中users表的增删改查的webapi1.在ide......
  • weblogic security
    HowtoDebugWLSUserSecurityInformation(DocID1513220.1)HowtoSetUpSecurityDebugintheWebLogicConsole(DocID2076131.1)WebLogicServerSecurityWarningsDetectedThroughtheAdminConsole(DocID2788605.1)解释WLS管理控制台(在应用2021......
  • JavaWeb之Servlet入门版教务系统(三)
    本次要分享的内容是之前教务系统中系统管理模块下的权限列表功能,包括对权限信息进行增删改查以及对不同的角色身份进行的不同权限分配(重点讲解)。首先还是需要使用mysql数据库准备一张权限表,建表语句如下:DROPTABLEIFEXISTS`sys_permission`;CREATETABLE`sys_permission`(......
  • WEB实战手册-基于C++(1)
    目录oat++oat++oat++是一个轻量级高性能Web服务开发框架,采用纯C++编写而成。特性:特性快速零依赖异步服务器,高性能,在单个服务器上同时处理超过500万个WebSocket连接多线程服务器(简单的API)连接无感知,可以使用任何传输类型,无论是SSL后端、套接字......
  • 优维产品最佳实践第4期:如何在海量日志中捞到你要的关键字?
    日志记录了软件系统的生命线,为我们提供了故障排查和性能优化的关键线索。本期EasyOps产品使用最佳实践,我们将为您揭晓:如何监控日志的关键字?如何基于关键字告警?日志关键字监控日志作为软件系统运行时记录,记录了软件运行生命周期的事件,因此日志监控在监控实践中属于非常关键的......
  • .net core Fleck WebSocket使用笔记
    @@.netcoreFleck socket帮助类usingFleck;usingKOTL_EvidenceService.Model;usingSystem;usingSystem.Collections.Generic;namespaceKOTL_EvidenceService.Util{publicclassServerHelper{WebSocketS......