在上文中,我们介绍并使用了pytest-html插件,总之并不复杂,但是今天我们要讲一个比pytest-html插件强很多的插件allure报告,我们要掌握他并且灵活使用,之后的框架就不需要考虑其他的了
 

1.使用allure需要什么?

因为allure的环境基于Java环境,所以得先下载JDK
 

下载JDK,配置环境变量

因为这方面教程太多了,所以就不细说了,详情可看推荐这篇:Java JDK下载与安装教程
配置JDK环境变量:Java JDK环境变量配置

下载allure,配置环境变量

 
 
  1. 首先选择一个版本
  1. 然后选择下载Zip文件
  1. 下载解压到你想放的文件夹里
  1. 配置allure环境变量
 

 
至此,我们的安装配置工作已经完成了,接下来检查一下我们是否安装并配置成功了
命令行打开,输入allure,检查配置
 
我们全部已经准备好了
那现在我们可以直接开整了
 
 

2.仿真登录功能自动化

以登录功能写测试用例:
既然是登录功能,我们可以结合之前学过的参数化篇:https://www.cnblogs.com/nuomituan/p/17554132.html,先来整理我们的数据
 
 

data数据篇

项目文件夹下,新建一个data目录,然后新建一个login.json文件
{
"case_01": {
"case": "用户名正确, 密码正确",
"user": "chen",
"pwd": "123456",
"expected": {
"code": 200,
"msg": "登录成功",
"data": "None"
}
},
"case_02": {
"case": "用户名正确, 密码为空",
"user": "chen",
"pwd": "",
"expected": {
"code": 404,
"msg": "用户名或密码错误",
"data": "None"
}
},
"case_03": {
"case": "用户名为空, 密码正确",
"user": "",
"pwd": "123456",
"expected": {
"code": 404,
"msg": "用户名或密码错误",
"data": "None"
}
},
"case_04": {
"case": "用户名错误, 密码错误",
"user": "chen",
"pwd": "123",
"expected": {
"code": 404,
"msg": "用户名或密码错误",
"data": "None"
}
}
}

tools工具篇

新建一个tools目录,创建处理JSON文件的get_data.py,JSON文件有一个地址,所以我们还要解决路径问题,一劳永逸,所以还需要根目录下创建一个confi.py处理基础路径
 
config.py文件代码:
import os

base_dir = os.path.dirname(__file__)
这里我们可以得到项目的根路径D:/Python/Pytest_Demo
 
get_data.py文件代码:
import json

from config import base_dir

json_file = base_dir + "/data/login.json"
print(json_file) def get_data():
# 指定文件路径 test_data = []
# 打开文件加载
with open(json_file, encoding="utf-8") as f:
case = json.load(f) for case_data in case.values():
test_data.append(tuple(case_data.values()))
print(test_data)
return test_data
 
我们调用函数测试下结果:
没有问题
 

testcase用例篇

  我们要测试登录功能,得先写个模块函数,模拟登录功能成功和失败的情况
def login(username, password):
"""
模拟登录功能
:param username:
:param password:
:return:
"""
user = 'chen'
pwd = '123456' if user == username and pwd == password:
return {
"code": 200,
"msg": "登录成功",
"data": "None"
}
else:
return {
"code": 404,
"msg": "用户名或密码错误",
"data": "None"
}
 
然后我们根据我们的测试数据,登录功能,编写测试用例吧
class TestLogin(object):

    @pytest.mark.parametrize("case,user,pwd,expected", get_data())
def test_login(self, case, user, pwd, expected):
"""测试用例"""
response = login(user, pwd)
assert response == expected
我们使用了parametrize装饰器,把测试数据取出来,然后用取出来的user,pwd登录,然后用返回的结果response做断言,执行看下结果:
 
准备工作已经完成,终于到我们今天的主角了
 

3.使用allure报告

安装插件

 
因为要集合pytest,所以在我们生成报告前,还需要装下allure-pytest插件
pip install -i https://pypi.douban.com/simple allure-pytest
 
mac:
pip3 install allure-pytest
 
那我们怎么使用呢?
 
 

生成allure测试结果

我们执行命令的时候,会输入命令pytest ,现在只需要在后边加上 --alluredir = path 生成的测试报告数据就到指定文件夹了
配置文件:
 
输入命令pytest执行看下结果:
 
已经生成了reports目录,并且有一些json文件,其实这就是我们执行的测试结果内容,如果想要以html形式看,那就需要用到allure命令了
 
 

生成allure报告

这块我们有两种方式
第一种:直接打开测试报告
allure serve path路径
我们在命令行输入allure serve ./reports,看下结果:
我们的报告已经生成
 
第二种方式:将测试结果生成到一个html报告到指定文件下
allure generate ./report -o ./report --clean
 
命令行输入:allure generate ./reports -o ./reports/report --clean
--clean 表示我们会清除report的文件夹,然后再生成报告
 
看下执行结果:
 
report就是我们生成的报告,打开下边的index.html看下吧
 
 
allure插件我们也掌握了,下篇我们深入allure报告插件在讲解
 

PlayWright(二十二)- allure插件(一)的更多相关文章

  1. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  2. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  3. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  4. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  5. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  6. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  7. Bootstrap入门(二十二)组件16:列表组

    Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...

  8. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

  9. 备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)

    备忘录模式 Memento   沿着脚印,走过你来时的路,回到原点.     苦海翻起爱恨   在世间难逃避命运   相亲竟不可接近   或我应该相信是缘份   一首<一生所爱>触动了多少 ...

  10. 二十二. Python基础(22)--继承

    二十二. Python基础(22)--继承 ● 知识框架   ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A:     def get(s ...

随机推荐

  1. [Python图像处理] 一.图像处理基础知识及OpenCV入门函数

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  2. Microsoft Loop初体验

    目前AI copilot无法使用. 问题 图片 在设置中可以打开实验选项 简单开箱使用 很多人说微软的loop竞品是notion,那么作为卡片盒双链笔记软件,最热门的应用当然是notion.从loop ...

  3. #PowerBI 1分钟学会,利用format函数,自定义格式显示

    PowerBI是一款强大的数据分析和可视化工具,它可以帮助我们快速地创建各种报表和仪表盘,展示数据的洞察和价值. 在PowerBI中,有许多内置的函数可以帮助我们处理和转换数据,其中一个常用的函数就是 ...

  4. PBN衔接ILS时中间进近航段的保护区绘制方法

    收到网友提问,PBN程序和ILS程序在衔接时,中间进近航段的保护区该怎么去绘制. 这个问题怎么看呢?首先起始进近航段与中间进近航段存在两种连接方式,一种是直线进近.另一种是转弯进近,两者的保护区是显著 ...

  5. 2021-02-21:手写代码:高性能路由,也就是一个字符串和多个匹配串进行模糊匹配。一个数组arr里是["*a*","moonfdd"],字符串"moonfdd"能匹配到,理由是arr里有。字符串"xayy"也能匹配到,理由是arr里的"*a*",第1个星对应"x",第2个星对应"yy"。

    2021-02-21:手写代码:高性能路由,也就是一个字符串和多个匹配串进行模糊匹配.一个数组arr里是["a","moonfdd"],字符串"moo ...

  6. Play to Earn Games

    什么是P2E游戏 P2E 游戏(Play to Earn Games)指的是在区块链游戏中,玩家可以通过完成任务.收获资源.挖矿或游戏中的其他活动以获得成就来赚取游戏内的资产(NFT)或代币(Toke ...

  7. Django4全栈进阶之路5 Model模型

    在 Django 中,模型(Model)是用于定义数据结构的组件,其作用如下: 定义数据结构:模型用于定义数据库中的表格和表格中的字段(列),其中每个模型类对应一个表格,模型中的每个字段对应表格中的一 ...

  8. idea构建grpc项目

    转载请注明出处: 安装protocbuf插件 idea 建议下载一个 protobuf的插件, 可以有代码提示. 这里直接去pluging里搜就行了. 在idea的plugins中搜索proto,然后 ...

  9. 前端学习 node 快速入门 系列 —— 事件循环

    事件循环 本篇将对以下问题进行讨论: 浏览器有事件循环,node 也有事件循环,两者有什么异同? node 核心特性(事件驱动和非阻塞 I/O )和事件循环有什么关系? node 中的高并发和高性能和 ...

  10. go语言中如何实现同步操作呢

    1. 简介 本文探讨了并发编程中的同步操作,讲述了为何需要同步以及两种常见的实现方式:sync.Cond和通道.通过比较它们的适用场景,读者可以更好地了解何时选择使用不同的同步方式.本文旨在帮助读者理 ...