首页 > 其他分享 >实用指南:使用Pytest Allure测试框架添加用例失败截图

实用指南:使用Pytest Allure测试框架添加用例失败截图

时间:2024-04-09 16:33:51浏览次数:30  
标签:allure Allure pytest 用例 开发 Pytest 测试 格沃兹

前言

在我们进行软件测试的过程中,我们提交的测试报告缺少一些详细的附件,尤其是用例失败时候的截图,更方便我们去查看具体的情况,我们在进行测试时会使用allure+pytest来生成测试报告,本文我们就来介绍一下在allure测试报告中添加用例失败截图。

钩子函数准备

我们可以使用pytest_runtest_makereport来获取获取用例执行结果,因此我们可以先在conftest.py写一下我们的钩子函数,如下:

# coding=utf-8
import pytest, os, allure
from selenium import webdriver
import xlrd


# 用例失败后自动截图
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
    """
    获取用例执行结果的钩子函数
    :param item:
    :param call:
    :return:
    """
    outcome = yield
    report = outcome.get_result()
    if report.when == "call" and report.failed:
        mode = "a" if os.path.exists("failures") else "w"
        with open("failures", mode) as f:
            if "tmpir" in item.fixturenames:
                extra = " (%s)" % item.funcargs["tmpdir"]
            else:
                extra = ""
                f.write(report.nodeid + extra + "\n")
            with allure.step('添加失败截图...'):
                allure.attach(driver.get_screenshot_as_png(), "失败截图", allure.attachment_type.PNG)


@pytest.fixture(scope='session', autouse=True)
def browser():

    global driver
    driver = webdriver.Chrome()
    return driver

测试用例

我们以登录豆瓣为例,写一下我们的测试代码,如下:

import pytest, os
from selenium import webdriver
import allure


def test_login(browser):
    with allure.step("step1:打开登录首页"):
        browser.get("https://accounts.douban.com/passport/login")
    with allure.step("step2:输入账号"):
        browser.find_element_by_name("username").send_keys("xxxxxxx")
    with allure.step("step2:输入密码"):
        browser.find_element_by_name("password").send_keys("xxxxxx")


if __name__ == "__main__":
    pytest.main(['--alluredir', '../report', 'test_2.py::test_login'])
    # allure转换成---html并打开测试报告
    os.system('cd D:/se_frame/Reports/allure_data')
    os.system('allure generate ../report -o report/html --clean')

总结

通过结合Pytest和Allure框架,我们可以轻松地为测试用例添加失败时的截图功能,从而更好地理解测试结果并加快故障排查的速度。希望本文能够帮助大家更好地利用Pytest和Allure框架进行测试,并提高软件质量。

推荐学习

【霍格沃兹测试开发】7 天软件测试快速入门 带你从零基础/ 转行/ 小白/ 就业/ 测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)

【霍格沃兹测试开发】6 小时轻松上手功能测试/ 软件测试工作流程/ 测试用例设计/Bug 管理

【霍格沃兹测试开发】零基础小白如何使用Postman ,从零到一做接口自动化测试/ 从零基础到进阶到实战

【霍格沃兹测试开发】建议收藏全国CCF 测试开发大赛Python 接口自动化测试赛前辅导 / 项目实战

新手专区--7 小时入门软件测试

标签:allure,Allure,pytest,用例,开发,Pytest,测试,格沃兹
From: https://www.cnblogs.com/hogwarts/p/18124265

相关文章

  • C#开发的绑定类型默认应用例子 - 开源研究系列文章
          这次在用C#编写一个看图软件小工具,然后其它的基本完成了,就是绑定看图软件到那些个图片扩展名的时候碰到了问题,就是如何将看图软件绑定图片文件的默认应用,以及解绑默认应用。这个涉及到注册表操作,但是找度娘和AI回答,都没得到良好的回复。于是就根据AI的提示,自己研究了......
  • playwright+Pytest+UI 自动化分成设计框架
    Auth:认证登录token机制BasePage:公共方法Common:ConfigLogsPageLocatorsPagesTestCasesTestDatas新建BasePage.py文件点击查看代码fromplaywright.sync_apiimportexpect,PagefromConfig.configimportConfigimportos,timeclassBasePage:def__init......
  • 学习笔记445—白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组
    白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖、基本路径覆盖语句覆盖:每条语句至少执行一次。判定覆盖:每个判定的所有可能结果至少出现一次。(又称“分支覆盖”)条件覆盖:每个条件的所有可能结果至少执行一次。判定/条件覆盖:一个判定中的每......
  • UML之用例图和案例分享
    目录一、概述:参与者(Actors):用例(UseCases):关系(Relationships):二、用途:        UML用例图是用于描述系统功能需求和用户与系统之间的交互关系的一种图形化建模工具。它主要用于捕捉系统的功能性需求,以及系统与外部参与者之间的交互行为。一、概述:参与者(Actors):在......
  • java为什么要使用接口呢 用例子带你全面理解接口
    接口的概念简单来说接口就是一个框架这就像做数学题的时候,需要套用固定的步骤是一样的在编程时,如果需要实现多个类似或者相同的模块,那么使用接口,可以让你拥有一套随时可以编辑的步骤.接口的意义在Java中,接口(Interface)扮演着非常关键的角色,它们有以下意义和作用:......
  • httprunner4.x学习02-用例结构
    测试用例(TestCase)一条测试用例(testcase)应该是为了测试某个特定的功能逻辑而精心设计的,并且至少包含如下几点:明确的测试目的(achieveaparticularsoftwaretestingobjective)明确的输入(inputs)明确的运行环境(executionconditions)明确的测试步骤描述(testingprocedure)明确的......
  • Python+requests+Pytest+logging+allure+pymysql框架详解
    一、框架目录结构1)tools目录用来放公共方法存储,如发送接口以及读取测试数据的方法,响应断言数据库断言前置sql等方法;2)datas目录用例存储接口用例的测试数据,我是用excel来存储的数据,文件数据图片数据等;3)testcases目录用来存放测试用例,一个python文件对应一个接口模块的......
  • Allure测试报告
    allure安装Mac安装方式1brewinstallallure2pipinstallallure-pytestWindows安装方式1https://github.com/allure-framework/allure2/releases2下载解压后将allure.bat添加进系统环境变量中3pipinstallallure-pytestallure特性分析  allure运行   ......
  • python自动化——pytest
    pytest,之前复习整理:https://www.cnblogs.com/xiaobaibailongma/category/1947423.html                                                 123......
  • [Pytest 02] How to write and report assertions in tests -How to Guidances
    AssertwiththeassertstatementAssertionsaboutexpectedexceptionsAssertionsaboutexpectedwarningsMakinguseofcontext-sensitivecomparisonsDefiningyourownexplanationforfailedassertionsAssertionintrospectiondetailsAssertionrewritingca......