Pytest结合allure插件生成allure测试报告【详细实战篇】

  • 一、Allure插件介绍
  • 二、Allure环境搭建与安装
    • 2.1 搭建步骤
    • 2.2 生成allure测试报告实例
  • 三、Allure与Pytest集成
    • 3.1 allure特性-feature、storry、step
    • 3.2 allure特性—severity
    • 3.3 allure.attach()
      • 3.3.1 pytest + selenium + allure报告

一、Allure插件介绍

  Allure框架是一个灵活轻量级多语言测试报告工具,它不仅可以以WEB的方式展示简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。
    Allure报告简化了常见缺陷的统计:失败的测试可以分为BUG和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。

二、Allure环境搭建与安装

2.1 搭建步骤

1、安装和配置JDK

  • a.下载jdk: https://www.oracle.com/java/technologies/downloads/#java8
  • b.安装jdk,傻瓜式安装即可
  • c.配置环境变量
    • JAVA_HOME: C:\Program Files\Java\jdk1.8.0_301 # 这个是JDK的安装路径
    • PATH:%JAVA_HOME%\bin 或C:\Program Files\Java\jdk1.8.0_301\bin

2、安装Allure

  • a.安装pytest-allure库:pip install allure-pytest
  • b.下载allure并解压
    • 下载地址:https://github.com/allure-framework/allure2/releases/
  • c.下载完成后解压到任意目录
  • d.配置allure环境变量到PATH路径
    • 我的电脑-右击属性-高级系统设置-环境变量-编辑系统环境变量path-添加allure bin目录-点击确定
  • e.验证
    • cmd: allure

注意:
安装 allure 前提条件需要 Java1.8 的环境,因为allure 是基于 Java 的一个程序。
虽然allure已经解压并加到了环境变量中,但是执行allure --version会报下面错误

2.2 生成allure测试报告实例

import os
import pytestif __name__ == '__main__':pytest.main(['-vs', '--alluredir', './tmp'])os.system('allure generate ./tmp -o ./report --clean')

1 、执行用例生成测试数据 pytest.main([‘-vs’,‘[测试文件.py]’,‘–alluredir’,‘./temp_jsonreport’])
因为allure生成的报告是json格式的,需要再转化成html格式的,所以会自动生成一个temp_jsonreport文件

2、生成测试报告 os.system(‘allure generate ./tmp -o ./report --clean’)

解释:

  • generate:生成allure的HTML报告
  • - -alluredir:是创建allure报告的路径
  • -o:是执行
  • -clean:是清除之前生成的报告

三、Allure与Pytest集成

allure除了支持Pytest自带的特性之外(fixture、parametrize、xfail、skip),自身也有非常强大的特性,下面来详细介绍。

3.1 allure特性-feature、storry、step

可以在报告中添加用例描述信息,比如:测试功能,子功能或场景,测试步骤以及测试附加信息

  • @allure.feature(“功能模块名称”):例如登录模块
  • @allure.story(“子功能模块”):例如输入正确用户名密码登录成功
  • @allure.step(“步骤”):测试步骤中的每个步骤,放在具体逻辑方法中
    • allure.stop(“步骤”):只能以装饰器的形式放在类或者方法上面
    • with allure.step:可以放在测试用例方法里面
  • allure.attach(“具体文本信息”)
    • 附加信息:数据、文本、图片、视频、网页等
import pytest
import allure@allure.feature("登录")
class TestLogin:@allure.story("登录成功")def test_login_success(self):print("登录成功")@allure.story("密码错误")def test_login_failure(self):with allure.step("输入用户名"):print("输入用户名")with allure.step("输入密码"):print("输入密码")print("点击登录")with allure.step("登录失败"):assert '1' == 1print("登录失败")@allure.story("用户名密码错误")def test_login_failure_a(self):print("用户名或者密码错误,登录失败")@allure.feature("注册")
class TestRegister:@allure.story("注册成功")def test_register_success(self):print("测试用例:注册成功")@allure.story("注册失败")def test_register_failure(self):with allure.step("输入用户名"):print("输入用户名")with allure.step("输入密码"):print("输入密码")with allure.step("再次输入密码"):print("再次输入密码")print("点击注册")with allure.step("注册失败"):assert 1 + 1 == 2print("注册失败")if __name__ == '__main__':pytest.main(['-vs', '--alluredir', './tmp'])os.system('allure generate ./tmp -o ./report --clean')

生成报告:

3.2 allure特性—severity

有时候在上线前,由于时间关系,我们只需要把重要模块测试一遍,在这样的场景下我们怎么实现呢?主要有三种方法:

1. 可以使用pytest.mark来标记用例

@pytest.mark.webtest # 添加标签 pytest -m "webtest"

2. 通过 allure.feature, allure.story来实现

pytest test_feature_story_step.py --allure-features "登录" //只运行登录模块
pytest test_feature_story_step.py --allure-stories "登录成功" //只运行登录成功子模块

3. 通过 allure.severity按重要性级别来标记,有5种级别:

  • Blocker级别:阻塞
  • Critical级别:严重
  • Normal级别:正常
  • Minor级别:不太重要
  • Trivial级别:不重要
import allure
import pytestdef test_with_no_severity_label():pass@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():pass@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():pass@allure.severity(allure.severity_level.NORMAL)
class TestclassWithNormalSeverity(object):def test_inside_the_normalseverity_test_class(self):pass@allure.severity(allure.severity_level.CRITICAL)def test_inside_the_normal_severity_test_class_with_overriding_critical_severity(self):pass
pytest test_allure_severity.py --alluredir=./result/4 --allure-severities normal,critical
allure serve ./result/4

3.3 allure.attach()

可以在报告中附加文本、图片以及html网页,用来补充测试步骤或测试结果,比如错误截图或者关键步骤的截图。

import allure
import pytestdef test_attach_text():allure.attach("纯文本", attachment_type=allure.attachment_type.TEXT)def test_attach_html():allure.attach("<body>这是一段htmlbody块</body>", "html页面", attachment_type=allure.attachment_type.HTML)def test_attach_photo():allure.attach.file("test.jpg", name="图片", attachment_tye=allure.attachment_type.JPG)

3.3.1 pytest + selenium + allure报告

测试步骤:打开百度
搜索关键词
搜索结果截图,保存到报告中
退出浏览器import allure
import pytest
from selenium import webdriver
import time@allure.testcase("http://www.github.com")
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data1', ['allure', 'pytest', 'unittest'])
def test_steps_demo(test_data1):with allure.step("打开百度网页"):driver = webdriver.Chrome("D:/testing_tools/chromedriver85/chromedriver.exe")driver.get("http://www.baidu.com")with allure.step("搜索关键词"):driver.find_element_by_id("kw").send_keys(test_data1)time.sleep(2)driver.find_element_by_id("su").click()time.sleep(2)with allure.step("保存图片"):driver.save_screenshot("./result/b.png")allure.attach.file("./result/b.png", attachment_type=allure.attachment_type.PNG)allure.attach('<head></head><body>首页</body>', 'Attach with HTML type', allure.attachment_type.HTML)with allure.step("退出浏览器"):driver.quit()

Pytest结合allure插件生成alluer测试报告【详细实战篇】相关推荐

  1. pytest合集(4)— 使用pytest-html插件生成HTML测试报告

    1.pytest-html插件安装 pytest-html 是 pytest 的一个插件,它为测试结果生成 HTML 报告. 要求: Python >=3.6 或 PyPy3. pip inst ...

  2. pytest文档75 - 生成 junit-xml 测试报告

    前言 pytest 生成junit-xml 测试报告,那么生成的xml报告有什么用呢?可以集合一些持续集成工具(如jenkins-等)方便查看报告. junit-xml 测试报告 命令行参数有2个跟 ...

  3. pytest结合allure-pytest插件生成allure测试报告

    1.下载,解压,配置path路径 https://github.com/allure-framework/allure2/releases https://github.com/allure-fram ...

  4. python测试用例管理_Python测试框架Pytest的常用插件测试报告

    原标题:Python测试框架Pytest的常用插件测试报告 一.pytest-html 生成 html 测试报告 要求:Python 3.6+ 安装:pip install pytest-html 文 ...

  5. Pytest系列——allure(原理)之allure工具与Pytest测试框架集成

    官方介绍 1.Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信 ...

  6. 使用 Swift Package 插件生成代码

    前言 不久前,我正在工作中开发一项新服务,该服务由 Swift Package 组成,该 Package 公开了一个类似于Decodable协议,供我们应用程序的其余部分使用.事实上,该协议是从Dec ...

  7. python怎么输出图像测试_【Python】使用Pytest集成Allure生成漂亮的图形测试报告

    前言 大概两个月前写过一篇<[测试设计]使用jenkins 插件Allure生成漂亮的自动化测试报告>的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jen ...

  8. pytest和allure生成测试报告

    文章目录 pytest简介 pytest和unittest区别 pytest使用自带的python-html 生成测试报告 由于自带生成测试报告的东西不是界面过于简单和不太美观可以使用allure 使 ...

  9. Pytest和Allure测试框架-超详细版+实战

    加我微信:hz223336,领取pytest视频 文章目录 一:pytest的介绍,安装,框架结构,执行方式 1,特点 2,安装 3, pytest的框架结构 4,执行方式 二:Pytest -断言. ...

最新文章

  1. 人工智能推理应用于场景的四大典型方式
  2. 需要注意变量作用域的使用
  3. 了解在HCI部署VDI的优势
  4. java 集成grizzly_java – 与Jersey和Spring集成Grizzly2.2.X
  5. Redis数据库(四)——Redis集群模式(主从复制、哨兵、Cluster)
  6. QHD DDIC is implemented via HANA
  7. solidworks模板_工程师实用高级操作,Solidworks自定义属性链接到工程图模板
  8. 哇!Flash影片剪辑导出静止的问题被解决了!
  9. 95-846-820-源码-网络-Flink 网络传输优化技术
  10. 50兆 svg 文件超过_如何让 Flutter 应用更好地使用 SVG?
  11. 状态码302怎么处理_HTTP状态码 201,202,302,405 ... 傻傻分不清,看这一个项目就够啦...
  12. mysql网吧管理系统_网吧收银系统 网吧的收费管理系统 - 下载 - 搜珍网
  13. 伺服的电机转矩、功率、转速、电压、电流换算公式
  14. 在三角形中rt是什么意思_什么叫Rt三角形
  15. 【存储知识】RAID(磁盘冗余阵列)与 LVM(逻辑卷管理器)
  16. uniapp 微信小程序 map获取接口数据后地图标注marker不会渲染显示
  17. 识别车牌是什么神经网络,车牌识别深度神经网络
  18. [渝粤教育] 中央财经大学 人力资源管理 参考 资料
  19. 英语语法篇 - 英语的补语
  20. writely is cool!

热门文章

  1. PMP之假设日志Assumption Log
  2. HEVC代码学习19:MV、MVD、MVP概念解析
  3. WordCount编程及执行流程
  4. linux设置密码复杂程度
  5. 在线怎么将pdf文件转换成word文档转换器使用
  6. 免拆诊断 | 2010款长城C30车加速无力
  7. 【文本数据挖掘】中文命名实体识别:HMM模型+BiLSTM_CRF模型(Pytorch)【调研与实验分析】
  8. pinyin去掉声调
  9. C# String 与 Ushort[] 数组 相互转换
  10. MPI函数说明及示例