Allure测试报告定制全攻略,优化你的Web自动化测试框架!

news2024/11/24 15:22:14

目录

 前言:

1. Allure测试报告简介

2. Web自动化测试框架简介

3. 封装Web自动化框架

3.1 安装Selenium

3.2 封装Selenium

3.3 定制Allure测试报告

3.3.1 适配翻译插件

3.3.2 定制测试报告样式

4. 示例代码

5. 总结


前言:

随着现在Web应用的普及,越来越多的企业开始将业务线上化,Web应用也成为了企业中必不可少的一部分。随着Web应用的增多,Web自动化测试框架也愈发重要。今天我将为大家介绍一下如何使用Allure测试报告来定制Web自动化测试框架。

1. Allure测试报告简介

Allure测试报告是由Yandex公司开发的一款开源测试框架,它提供了非常丰富的信息和交互式操作来展示测试结果。Allure测试报告可以提供如下特点:

- 集成多种测试框架:Allure支持JUnit、TestNG等多种测试框架;
- 可视化测试结果:Allure测试报告提供了交互式的测试结果展示方式,易于测试人员查看和理解;
- 定制测试报告:Allure测试报告支持用户自定义模板,可以根据需求自由定制测试报告。

2. Web自动化测试框架简介

Web自动化测试框架是一些工具和库的集合,用于自动化测试Web应用程序。这些框架可以帮助测试人员快速构建可重用的测试脚本。

常用的Web自动化测试框架有如下几种:

- Selenium:一个基于浏览器自动化的框架,可以模拟用户行为对Web应用程序进行自动化测试;
- RobotFramework:一个开源的自动化测试框架,支持Python编写测试脚本;
- Cucumber:一个BDD(行为驱动开发)测试框架,用自然语言方式定义测试用例。

3. 封装Web自动化框架

在测试Web应用程序时,我们可以使用上述框架来编写测试脚本。但是为了实现定制化的测试报告,需要对测试框架进行封装。下面以Python语言为例来对Selenium进行封装。

3.1 安装Selenium

首先需要安装Selenium,可以使用pip命令进行安装:

pip install selenium

3.2 封装Selenium

接下来进行Selenium的封装。首先,我们新建一个selenium_driver.py文件,用于初始化WebDriver,并定义一些常用的操作。

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


class SeleniumDriver:
    def __init__(self, driver_path, headless=False):
        """
        :param driver_path: WebDriver的路径
        :param headless: 是否无头模式
        """
        chrome_options = Options()
        if headless:
            chrome_options.add_argument('--headless')
        self.driver = webdriver.Chrome(executable_path=driver_path, options=chrome_options)

    def get(self, url):
        self.driver.get(url)

    def find_element(self, locator):
        """
        :param locator: 元素定位,示例:'css selector', 'body'
        """
        return self.driver.find_element(*locator)

    def close(self):
        self.driver.quit()

在上述代码中,SeleniumDriver类封装了Selenium的WebDriver,并提供了常用的Web操作方法。

3.3 定制Allure测试报告

接下来,我们需要对Allure测试报告进行定制。首先,我们新建一个allure_report.py文件,用于自定义Allure测试报告。

Allure测试报告支持用户自定义模板,我们可以根据需求自由定制测试报告。下面介绍几个常见的测试报告模板。

3.3.1 适配翻译插件

在Allure测试报告中添加翻译插件可以使报告支持多语言,提高测试报告的可读性和可访问性。

方法一:

安装allure-pytest和allure-pytest-translations两个库:

pip install allure-pytest
pip install allure-pytest-translations

接下来,我们在pytest.ini文件中添加如下配置:

[pytest]
addopts = -v –capture=no –alluredir=./result –clean-alluredir
testpaths = ./tests/
python_files = test_*.py
python_classes = Test*
python_functions = test_*
cache_dir = ./.pytest_cache

[allure]
language = zh
plugins = i18n,pytester

其中,language参数用于定义测试报告的语言,plugins参数指定使用哪些插件。

方法二:

在allure.yml文件中添加如下配置:

# Langauge settings
language: en

#plugins settings
plugins:
  - i18n
  - junit
  - summary

在pytest.ini文件中添加如下配置:

[pytest]
addopts = -v –capture=no –alluredir=./result –clean-alluredir
testpaths = ./tests/
python_files = test_*.py
python_classes = Test*
python_functions = test_*
cache_dir = ./.pytest_cache

[allure]
config_file = ./allure.yml

3.3.2 定制测试报告样式

除了支持多语言,在Allure测试报告中还可以定制报告样式。我们可以通过编写CSS文件来定制测试报告。

首先,新建一个allure.css文件,定义测试报告的样式。例如:

/* 自定义测试报告主题 */
body {
    background-color: #F8F8F8;
    color: #000000;
}

接下来,我们在pytest.ini文件中添加如下配置:

[pytest]
addopts = -v –capture=no –alluredir=./result –clean-alluredir
testpaths = ./tests/
python_files = test_*.py
python_classes = Test*
python_functions = test_*
cache_dir = ./.pytest_cache

[allure]
# 使用自定义的CSS样式
extra_css = ./allure.css

通过上述操作,我们完成了定制化Allure测试报告的工作。

4. 示例代码

下面是一个示例代码,演示如何对Selenium进行封装,并使用Allure测试报告定制Web自动化测试框架。

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


class TestBaidu:
    def setup_method(self):
        self.driver = SeleniumDriver('chromedriver.exe', headless=False)
        self.driver.get('https://www.baidu.com')

    def teardown_method(self):
        self.driver.close()

    @allure.step('在搜索框输入关键字:{1},点击搜索按钮')
    def baidu_search(self, keyword):
        self.driver.find_element((By.ID, 'kw')).send_keys(keyword)
        self.driver.find_element((By.ID, 'su')).click()

    @allure.title('测试百度首页搜索功能')
    def test_baidu_search(self):
        with allure.step('输入关键字:Allure Report'):
            self.baidu_search('Allure Report')
        with allure.step('验证搜索结果页面是否存在指定元素'):
            assert self.driver.find_element((By.PARTIAL_LINK_TEXT, 'allure.qatools.ru')) is not None

在上述代码中,我们使用了SeleniumDriver来初始化WebDriver,并定义了封装后的测试用例。在测试用例中,我们使用了Allure测试报告的@step和@title装饰器来自定义测试报告。

5. 总结

本文介绍了如何使用Allure测试报告来定制Web自动化测试框架。通过定制化测试报告,我们可以更加清晰地展示测试结果,并提高测试报告的可读性和可访问性。同时,还介绍了如何对Selenium进行封装,使测试脚本更加易于编写和维护。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

方式:留【自动化测试】即可
【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=yTky89vp61ak2ySZMOHqFKs3cy63KNdR&authKey=CdUemWSkJDENrUBUAj1JFqz5RQ4ov6MKoYzfjSJmLZ9Ot656Xl857XpyxrFO6OI5&noverify=0&group_code=574737577

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【特征选择】基于二进制粒子群算法的特征选择方法(PNN概率神经网络分类)【Matlab代码#33】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. 特征选择问题2. 二进制粒子群算法3. 概率神经网络(PNN)分类4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节&…

day42_jsp

今日内容 零、 复习昨日 一、JSP 二、EL 三、JSTL 四、MVC 零、 复习昨日 一、JSP 1.0 引言 现有问题 在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处? 开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注…

8.3:加强堆的应用

8.3:加强堆的应用 题目要求: 做一个加强堆的题目,给定一个整型数组,int[] arr;和一个布尔类型数组,boolean[] op 两个数组一定等长,假设长度为N,arr[i]表示客户编号,op…

【程序人生】上海城市开发者社区小聚有感

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

shell脚本入门-编写格式以及执行方式

Shell介绍 通过编写shell命令发送给linux内核去执行,操作就是计算机硬件,所以Shell命令是用户操作计算机硬件的桥梁 Shell是命令,类似与windows系统的Dos命令 Shell是一门程序设计语言,shell里面含有变量,函数&#xf…

低代码助力企业数字化转型:构建高效业务系统的新选择

在当今数字化时代,企业数字化转型已经成为业界的热门话题。随着全球各大企业逐渐意识到数字化转型的重要性,越来越多的公司开始采用低代码开发平台作为数字化转型的工具,以低成本高效率构建业务系统,实现数字化转型。 但现实情况是…

Less基础速学 —— 混入、运算、继承

Less 混合 在上一篇内容中就已经简单的了解了关于CSS预处理器 —— Less&#xff0c;本篇就往下讲Less中的混合&#xff0c;什么是混合&#xff1f;就是将一系列属性从一个规则集引入到另外一个规则集的方式。下面来看一下它的混合方式有哪些&#xff1f; 普通混合 <div …

使用OpenCvSharp来计算图像的清晰度(可实现相机自动对焦)

相机自动对焦&#xff0c;其实是对相机成像的清晰值得计算&#xff0c;若对焦不清晰&#xff0c;成像的清晰度低&#xff0c;视觉效果模糊。若是在工业检测行业&#xff0c;对焦不准确&#xff0c;可能导致信息不正确&#xff1b;对焦准确的图像&#xff0c;其清晰度高&#xf…

长连接心跳原理与机制工程上踩坑与优化

QA: 业务上对于心跳间隔一般怎么确定? 心跳间隔的确定一般需要根据具体业务场景和需求来进行。以下是一些常见的确定心跳间隔的方法&#xff1a; 根据应用场景和需求来确定心跳间隔。例如&#xff0c;在智能手环等健康监测设备中&#xff0c;心跳间隔通常设置为几秒钟到几分钟…

华为OD机试之过滤组合字符串(Java源码)

过滤组合字符串 题目描述 每个数字关联多个字母&#xff0c;关联关系如下&#xff1a; 0 关联 “a”,”b”,”c”1 关联 “d”,”e”,”f”2 关联 “g”,”h”,”i”3 关联 “j”,”k”,”l”4 关联 “m”,”n”,”o”5 关联 “p”,”q”,”r”6 关联 “s”,”t”7 关联 “u”…

六级备考24天|CET-6|翻译技巧4|翻译红楼梦|22:40~23:40

目录 作题步骤 红楼梦 12 PRACTICE ANSWER​ 时态问题 3 ANSWER 4 PRACTICE ANSWER ​ 5​ PRACTICE ANSWER 合并 ​ 全文翻译​ 作题步骤 不要拿到题目就动笔、一定要先读题、重建逻辑、找句子主干、有能力可以润色简化&#xff01; 红楼梦 12 PRACTICE Dream of th…

【java】leetcode 二叉树展开为链表

二叉树展开为链表 leetcode114 .二叉树展开为链表解题思路二叉树专题&#xff1a; leetcode114 .二叉树展开为链表 114 leetcode 链接。可以打开测试 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#x…

【Redis】共同关注列表与基于Feed流的关注消息滚动分页推送的实现

目录 一、共同关注 1、思路 2、实现步骤 二、Feed流 1、概念 2、需求 3、TimeLine的三种模式 1.拉 2.推 3.推拉结合 4、TimeLine三种模式的区别 三、关注推送 1、需求 2、实现思路 3、Redis数据结构的选择 4、滚动分页 5、代码实现 1.博主 2.粉丝 一、共同关…

Packet Tracer - 在 VTY 线路上配置 ACL

Packet Tracer - 在 VTY 线路上配置 ACL 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 路由器 F0/0 10.0.0.254 255.0.0.0 不适用 PC NIC 10.0.0.1 255.0.0.0 10.0.0.254 笔记本电脑 NIC 10.0.0.2 255.0.0.0 10.0.0.254 拓扑图 目标 第 1 部分&#…

企业性能测试全面解析,一步步教你进行性能测试!

目录 前言&#xff1a; 性能需求调研 性能测试计划制定 性能测试执行 性能测试结果分析与优化 结尾&#xff1a; 前言&#xff1a; 在软件开发过程中&#xff0c;性能测试是一个非常重要的环节。性能测试的主要目的是评估系统在负载情况下的响应时间、吞吐量、稳定性等指…

【C语言】二分查找(含图解)

文章目录 1. 二分查找思想2. 代码实现2.1 未封装函数2.2 封装函数&#xff08;使用while循环&#xff09;2.3 封装函数&#xff08;使用递归&#xff09; 1. 二分查找思想 二分法&#xff1a;二分查找算法是一种在有序数组中查找某一特定元素的搜索算法&#xff0c;其思想就是…

【Linux】多线程操作

文章目录 一. 线程库二. 多线程操作1. 线程创建2. 线程等待3. 线程退出4. 线程取消5. 线程分离6. 返回值 三. 多线程理解结束语 一. 线程库 在Linux下&#xff0c;并没有真正的线程&#xff0c;只有用进程模拟的轻量级进程&#xff0c;所以Linux并没有提供可以直接创建线程的接…

JavaScript教程(三)之 jQuery

JavaScript库 即library&#xff0c;是一个封装好的特定的集合&#xff08;方法和函数&#xff09;。从封装一大堆函数的角度理解库&#xff0c;就是在这个库中&#xff0c;封装了很多预先定义好的函数在里面&#xff0c;比如动画animate、hide、show&#xff0c;比如获取元素…

每日学术速递5.25

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Chupa: Carving 3D Clothed Humans from Skinned Shape Priors using 2D Diffusion Probabilistic Models 标题&#xff1a;Chupa&#xff1a;使用 2D 扩散概率模型从蒙皮形状先验雕…

理解Window和WindowManager(一)

理解Window和WindowManager(一) Window是一个抽象类,它的具体实现是PhoneWindow,创建一个WindowManager就可以创建一个Window&#xff0c; Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService是一个IPC过程 为什么使用Window 首先就是Window…