Python测试框架--Allure

严格意义上讲 Allure 不算是测试框架,但是它是生成漂亮测试报告的开源工具,搭配 Pytest 测试框架食用更搭。

  也就是说 Allure 是在 Pytest 执行完生成的测试数据的基础上,对测试数据进行处理统计,生成格式统一、美观的测试报告。

一、Allure初识

1. 什么是 Allure

  Allure 是由Qameta Software团队开源的一款旨在于解决让每个人能更容易生成并更简洁阅读的测试报告框架。它支持大多数的测试框架,如:Pytest、TestNG等,简单易用便于集成。

2. Allure环境搭建

  工欲善其事必先利其器,Allure 框架基于其他的测试框架使用,例如:Pytest。

  1. # windows env

  2. source env/Scripts/activate

  3. # 安装 pytest 和 pytest-allure-adaptor

  4. pip3 install pytest

  5. # Allure Pytest Adaptor是Pytest的一个插件(比较旧的一个插件)

  6. # allure-pytest 比较新一点,建议使用

  7. pip3 install pytest-allure-adaptor

  8. pip3 instal allure-pytest

  9. # 安装Allure工具,主要是讲pytest的测试数据转换成HTML数据

  10. # linux环境安装

  11. # 现将allure源添加到linux的源里

  12. sudo apt-add-repository ppa:qameta/allure

  13. # 更新本地源

  14. sudo apt-get update

  15. # 安装allure,[allure无法使用的解决方案](https://askubuntu.com/questions/1168821/allure-report-installed-but-not-findable)

  16. sudo apt-get install allure

  17. # 上面的方法不行的话,用下面的方法

  18. curl -o allure-2.6.0.tgz -Ls https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.6.0/allure-2.6.0.tgz

  19. sudo tar -zxvf allure-2.6.0.tgz -C /opt/

  20. sudo ln -s /opt/allure-2.6.0/bin/allure /usr/bin/allure

  21. allure --version

  22. # Windows 下安装就麻烦点,可以使用 Scoop 工具(Chocolatey工具不知道为什么安装不了),不管了官方推荐使用 Scoop 安装就使用 Scoop 安装得了

  23. # 先安装[Scoop](https://juejin.cn/post/6844904017823285262)

  24. # 检查sccop是否安装成功

  25. scoop --version

  26. # 安装 allure

  27. scoop install allure

  28. # 查看allure是否安装成功

  29. allure --version

二、Pytest集成Allure

   Allure要生效需要在测试文件和测试通配文件(conftest.py)中配置 allure。

1. allure的特性

Aullre的几个特性:

  1. @allure.feature # 用于定义被测试的功能,被测产品的需求点

  2. @allure.story # 用于定义被测功能的用户场景,即子功能点

  3. with allure.step # 用于将一个测试用例,分成几个步骤在报告中输出

  4. allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据信息

  5. @pytest.allure.step # 用于将一些通用的函数作为测试步骤输出到报告,调用此函数的地方会向报告中输出步骤

2. pytest集成allure

测试文件示例,生成测试数据,进一步生成 allure 测试报告

  1. #!/usr/bin/env python

  2. # -*- encoding: utf-8 -*-

  3. """

  4. @File : test_allure_shopping.py

  5. @Time : 2019/12/1017:34

  6. @Author : Crisimple

  7. @Github : https://crisimple.github.io/

  8. @Contact : Crisimple@foxmail.com

  9. @License : (C)Copyright 2017-2019, Micro-Circle

  10. @Desc : None

  11. """

  12. import pytest

  13. import allure

  14. # allure.feature 定义功能

  15. @allure.feature("报告购物车")

  16. class TestAllure(object):

  17. # 定义用户场景

  18. @allure.story("加入购物车")

  19. def test_add_goods_cart(self):

  20. # 调用步骤函数

  21. login("crisimple", "123456")

  22. # 将测试用例分成几个步骤,将测试步骤打印到测试报告中,步骤二

  23. with allure.step("浏览商品"):

  24. # allure.attach--打印一些附加信息

  25. allure.attach("商品1", "C")

  26. allure.attach("商品2", "C")

  27. # 步骤三

  28. with allure.step("加入商品"):

  29. allure.attach("商品1", 2)

  30. allure.attach("商品2", 3)

  31. # 步骤四

  32. with allure.step("校验商品"):

  33. allure.attach("商品1加入成功", "共2个")

  34. allure.attach("商品2加入失败", "共0个")

  35. @allure.story("继续购物")

  36. def test_continue_shopping_cart(self):

  37. login("crisimple", "123456")

  38. allure.attach("商品3", 4)

  39. print("继续购物成功")

  40. @allure.story("减少商品失败")

  41. def test_edit_shopping_cart(self):

  42. login("crisimple", "123")

  43. assert 0

  44. @pytest.mark.skip(reason="删除购物车不执行")

  45. @allure.story("删除购物车")

  46. def test_delete_shopping_cart(self):

  47. login("crisimple", "123")

  48. print()

  49. # 将函数作为一个步骤,调用此函数时,报告中输出一个步骤,步骤名称通常时函数名,这样的函数通常称为步骤函数

  50. @allure.step("用户登录")

  51. def login(user, passwd):

  52. if user == "crisimple" and passwd == "123456":

  53. print(user, passwd)

  54. print("登录成功")

  55. else:

  56. print(user, passwd)

  57. print("登录失败,请重新尝试")

三、Allure生成测试报告

1. pytest生成测试报告
  1. # 执行全部的测试用例

  2. pytest ./Allure/test_allure_shoping.py --alluredir ./Allure/result/

  3. # 执行指定features或者stories执行一部分测试用例,比如执行‘报告购物车’下的‘加入购物车’子功能的测试用例

  4. pytest ./Allure/test_allure_shopping.py --allure_features="报告购物车" --allure_stories="加入购物车" ../Allure/part_

2. Allure生成测试报告
  1. # 生成测试报告

  2. allure generate ./Alluer/result/ -o ./Allure/report/ --clean

  3. # 打开测试报告

  4. allure open -h 127.0.0.1 -p 8083 ./Allure/report/

打开测试报告,牛皮的是可以切换中文版本 

 

  1. Overview(概览)

  2. Categories(类别)

  3. Behavior(功能)

  4. Suites(测试套件)

  5. Graphs(图标)

  6. Timeline(时间刻度)

  7. Packages(测试包)

四、Allure与Jenkins结合

  对于成规模的测试团队会把自动化测试部署集成到Jenkins中,构建成自动化部署。

4.1 Jenkins配置Allure

安装Allure插件

 

4.2 创建job

配置路径必须配置一致

 
  1. source env/bin/activate

  2. echo "**************Welcome to env**************"

  3. echo "**************pytest create test data**************"

  4. pytest /完整路径/Allure/test_allure_shopping.py --alluredir ${WORKSPACE}/allure-results/

  5. echo "**************report has generated done**************"

4.3 执行工程

立即构建工程即可。

 感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/443908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言函数栈帧的创建与销毁(32)

文章目录 前言一、什么是函数栈帧?二、理解函数栈帧能解决什么问题?三、函数栈帧的创建和销毁解析什么是栈?认识相关寄存器和汇编指令 四、解析函数栈帧的创建和销毁预备知识函数的调用堆栈准备环境转到反汇编函数栈帧的创建函数栈帧的销毁 五…

FreeRTOS学习总结

背景:在裸机开发上,有时候我们需要等待某个信号或者需要延迟时,CPU的运算是白白浪费掉了的,CPU的利用率并不高,我们希望当一个函数在等待的时候,可以去执行其他内容,提高CPU的效率,同…

视频格式不支持播放怎么办?几招教你转换成mp4格式

视频已成为我们生活中不可或缺的一部分,无论是学习、娱乐还是工作交流,视频都扮演着重要角色。然而,在享受视频带来的便利时,我们时常会遇到一个令人头疼的问题——视频格式不支持播放。不同设备、平台和软件对视频格式的支持各不…

什么是组态软件?Web组态软件又是什么?

从事相关工作的对“组态软件”应该都不陌生,那Web组态软件又是什么呢?本文将对Web组态可视化软件(下称“Web组态软件”)做简单介绍,可视化编辑器是Web组态软件中的一个重要功能模块。除了编辑器,还有哪些功能模块?又…

leetcode---素数,最小质因子,最大公约数

1 判断一个数是不是质数(素数) 方法1&#xff1a;依次判断能否被n整除即可&#xff0c;能够整除则不是质数&#xff0c;否则是质数 方法2&#xff1a;假如n是合数&#xff0c;必然存在非1的两个约数p1和p2&#xff0c;其中p1<sqrt(n)&#xff0c;p2>sqrt(n)。 方法3&…

医院管理新思维:Spring Boot技术应用

5系统详细实现 5.1 医生模块的实现 5.1.1 病床信息管理 医院管理系统的医生可以管理病床信息&#xff0c;可以对病床信息添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 病床信息管理界面 5.1.2 药房信息管理 医生可以对药房信息进行添加&#xff0c;修改&#xff0c;…

Java中System类和RunTime类的Api

目录 System 类 1)out 2)err 3)in 4)currentTimeMillis() 5)nanoTime() 6)arraycopy(Object 要从里面复制东西的数组, int 要从里面复制东西数组的索引起始位置, Object 获得复制元素的数组, int 获得复制元素数组的起始索引, int 要复制东西的个数) 7)gc() 8)exit(int status)…

运维工具之ansible

Ansible 1.什么是ansible? ​ ansible是基于ssh架构的自动化运维工具&#xff0c;由python语言实现&#xff0c;通过ansible可以远程批量部署等。 2.部署前提 ​ 控制端需要安装ansible,被控制端要开启ssh服务&#xff0c;并允许远程登录&#xff0c;被管理主机需要安装py…

探讨Facebook在全球社交网络中的技术优势

Facebook作为全球最大的社交网络之一&#xff0c;其技术优势在于多个方面&#xff0c;这些优势不仅塑造了用户体验&#xff0c;也影响了整个社交媒体生态。 个性化用户体验 Facebook通过分析用户的行为和兴趣&#xff0c;提供个性化的内容推荐。利用机器学习算法&#xff0c;平…

仅用一分钟,AI如何帮你构建完整的论文初稿?揭秘背后科技!

大家好&#xff01;在今天的分享中&#xff0c;我们将深入探讨一项令人兴奋的技术进展&#xff1a;仅用一分钟&#xff0c;AI如何帮助你构建一篇完整的论文初稿。这项技术不仅节省了研究人员和学生的宝贵时间&#xff0c;还改变了我们对学术写作的传统认知。 首先&#xff0c;…

【读书笔记·VLSI电路设计方法解密】问题10:从概念到硅片开发SoC芯片的主要任务

从概念到硅片的SoC芯片开发过程可分为以下四个任务&#xff1a;设计、验证、实现和软件开发。 设计&#xff1a;通常从市场调研和产品定义开始&#xff0c;然后进行系统设计&#xff0c;最后以RTL编码结束。验证&#xff1a;确保芯片按照设计规格能够准确执行功能&#xff0c;…

深度学习500问——Chapter17:模型压缩及移动端部署(4)

文章目录 17.9 常用的轻量级网络有哪些 17.9.1 SequeezeNet 17.9.2 MobileNet 17.9.3 MobileNet-v2 17.9.4 Xception 17.9 常用的轻量级网络有哪些 17.9.1 SequeezeNet SqueezeNet出自 F.N.landola, S.Han等人发表的论文《SqueezeNet&#xff1a;ALexNet-level accuracy with…

目标检测中的损失函数

损失函数是用来衡量模型与数据的匹配程度的&#xff0c;也是模型权重更新的基础。计算损失产生模型权重的梯度&#xff0c;随后通过反向传播算法&#xff0c;模型权重得以更新进而更好地适应数据。一般情况下&#xff0c;目标损失函数包含两部分损失&#xff0c;一个是目标框分…

RandLA-Net PB 模型 测试

tensorflow ckpt 模型 转换 pb 模型, 测试模型是否正确, 后续实现 c++ 部署。 Code: https://github.com/QingyongHu/RandLA-Net 测试PB 模型 RandLANetConvert.py import tensorflow.compat.v1 as tf tf.disable_v2_behavior

R语言中的plumber介绍

R语言中的plumber介绍 基本用法常用 API 方法1. GET 方法2. POST 方法3. 带路径参数的 GET 方法 使用 R 对数据进行操作处理 JSON 输入和输出运行 API 的其他选项其他功能 plumber 是个强大的 R 包&#xff0c;用于将 R 代码转换为 Web API&#xff0c;通过使用 plumber&#x…

PowerJob做定时任务调度

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、区别对比二、使用步骤1. 定时任务类型2.PowerJob搭建与部署 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; PowerJob是基于java开…

如何优化抖音直播间数据?

在数字驱动的时代&#xff0c;缺乏精准的数据支撑&#xff0c;任何线上活动都难以形成有效的流量循环。特别是在抖音直播这一领域&#xff0c;深入理解并优化核心数据&#xff0c;是提升直播效果、吸引并留住观众的关键。那么&#xff0c;抖音直播平台在评估一场直播时&#xf…

【重学 MySQL】四十六、创建表的方式

【重学 MySQL】四十六、创建表的方式 使用CREATE TABLE语句创建表使用CREATE TABLE LIKE语句创建表使用CREATE TABLE AS SELECT语句创建表使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据&#xff08;与CREATE TABLE AS SELECT类似&#xff09;使用CREATE TEMPORARY …

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…

【Redis】持久化(上)---RDB

文章目录 持久化的概念RDB手动触发自动触发bgsave命令的运行流程RDB文件的处理RDB的优缺点RDB效果展示 持久化的概念 Redis支持AOF和RDB两种持久化机制,持久化功能能有效的避免因进程退出而导致的数据丢失的问题,当下次重启的时候利用之前持久化的文件即可实现数据恢复. 所以此…