httprunnet自动化测试实战

news2025/1/16 21:25:47

引言

自动化测试是指使用软件工具、脚本或编程来执行测试任务,以代替人工执行测试用例的过程。它使用自动化工具和技术来模拟用户操作,验证和评估软件应用程序的功能、性能和稳定性。
自动化测试的主要目的是提高测试效率和质量,它具有以下几个重要的意义:
1、提高效率:自动化测试可以大幅度缩短测试周期,减少测试工作量和时间成本。相比手动测试,自动化测试可以在短时间内执行大量测试用例,加快测试过程。
2、提高准确性:自动化测试可以消除人为的错误和主观判断,提供一致性的测试结果。它可以准确地模拟用户行为和操作,减少人为误差,提高测试准确性。
3、提高覆盖范围:自动化测试可以覆盖更多的测试场景和测试用例。它可以同时运行多个测试,并在不同的环境和配置下运行,更全面地测试应用的功能和性能。
4、提高回归测试效率:对于频繁更改和发布的系统,自动化测试可以在每次更改后快速运行回归测试,以确保新功能不会影响现有功能的正确性。
5、提高可重复性:自动化测试可以重复执行相同的测试用例,确保测试过程的一致性和可重现性。这对于验证和复现缺陷、追踪问题非常有价值。
6、释放人力:自动化测试可以将重复性和繁琐的测试任务交给机器完成,从而释放测试人员的时间和精力,使其能够更专注于更具创造性和挑战的测试任务,如测试策略的制定和缺陷分析。

总之,自动化测试在提高测试效率和质量方面具有重要的意义,使团队能够更快速、准确和全面地验证和评估软件应用的各个方面。

自动化测试的好处

自动化测试的好处包括提高测试效率、提高测试覆盖范围、提高测试准确性、提高回归测试效率、提高可重复性、节省时间和成本,以及释放测试人力。这些好处使团队能够更快速、准确、全面和可靠地进行软件测试,提供高质量的软件产品。

自动化测试工具的选择

调研两款工具,本次实践用选择httprunner

httprunnerpytest
httprunner是一个基于Python的开源工具,易于学习和上手,使用YAML语言编写测试脚本,对于非开发人员也比较友好ytest是一个成熟的Python测试框架,提供了丰富的功能和插件,但对于非开发人员来说,可能有一定的学习曲线。
httprunner不仅支持接口测试,还支持功能测试、性能测试、安全测试等多种类型的测试。它还具有数据驱动、参数化、断言等强大的功能,可以满足复杂的测试需求。pytest提供了丰富的功能和插件,支持各种类型的测试,如单元测试、集成测试、功能测试等。通过自定义插件和自定义装置,可以很灵活地扩展和定制。
httprunner有一个活跃的社区,文档详细,有较多的示例供参考。同时,它与Python的生态系统相集成,可以利用Python社区提供的丰富资源。pytest在Python社区中非常受欢迎,拥有活跃的社区和广泛的文档支持。还有许多插件可以集成到pytest中,增强其功能。
httprunner允许使用Python进行自定义扩展,可以通过编写Python代码来进行更高级的定制和扩展。pytest提供了丰富的插件机制,可以通过开发自定义插件来扩展其功能。这使得pytest非常灵活,可以应对各种定制和扩展需求。

自动化测试脚本的编写和维护

环境准备:python环境安装
安装httprunner

pip3 install httprunner

创建hrp项目

 hrp startproject demo --py

手工编写用例,官网demo:
在这里插入图片描述
运行用例,生产测试报告

hrp run testcases -gc

用例增强-自定义函数
在项目下debugtalk.py文件下编写自定义函数
在这里插入图片描述
variables关键字下声明自定义函数格式 变量名: 函数实例 ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 725 b 4 c f 0 a 0254 e 11 b 1 f b 3 d 667 e 752 c 50. p n g ) 在用例中使用: {函数实例} ![在这里插入图片描述](https://img-blog.csdnimg.cn/725b4cf0a0254e11b1fb3d667e752c50.png) 在用例中使用: 函数实例![在这里插入图片描述](https://imgblog.csdnimg.cn/725b4cf0a0254e11b1fb3d667e752c50.png)在用例中使用:变量名
在这里插入图片描述
用例增强-引用yml依赖
在测试步骤中引用yml文件作为依赖
在这里插入图片描述
用例增强-一个用例中变量导出给其他用例使用
在用例中使用关键字export导出需要给其他用例使用的变量
在这里插入图片描述
在新用例中引用变量
在这里插入图片描述

自动化测试集成与持续集成

本地集成思路
目的:将每次执行的自动化结果更新到测试平台展示
1、触达用例执行
2、执行结果生产静态文件保存到测试平台static目录下
测试平台搭建源码

import subprocess
import os
import shutil
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
dir = BASE_DIR 


class do_case():
    def __init__(self,dirpath):
        self.dir = dirpath


    def remove_file(self):
        path = self.dir
        files = os.listdir(path)
        for file in files:
            os.remove(path + file)


    def rename_file(self):
        file = os.listdir(self.dir)
        for i in range(len(file)):
            # 原文件名
            n1 = self.dir  + file[i]
            # 新文件名
            n2 = 'auto_report.html'
            # 调用改名函数,完成改名操作
            os.rename(n1, self.dir+n2)


    def cope_file(self):
        shutil.copy(self.dir + '\\auto_report.html', BASE_DIR + '\\cloudWeb\\public\\static')


    def run_case(self):
        subprocess.call(" hrp run testcases\-gc",
                        shell=True)

def run_case():
    do = do_case(dir)
    # 清除目录
    do.remove_file()
    # 执行用例
    do.run_case()
    # 改名report
    do.rename_file()
    # 移动report
    do.cope_file()

前端代码

<template>
  <div class="iframe_box">
    <el-button type="primary" :loading="loadflag" style=" frameborder:0; margin-top:25%;margin-left:1.5%;" @click="run">run testcase</el-button>
    <iframe
      ref="iframeDom"
      :src="`/static/auto_report.html`"
      style="width: 100%; height: 100%; frameborder:1; position: absolute; top: 0; left: 0;margin-left:10%;"
    />
  </div>
</template>
<script>
import { run_case_list } from '@/api/apiAuto'
export default {

  data() {
    return {
      loadflag: false
    }
  },
  methods: {
    run() {
      this.loadflag = true
      run_case_list({}).then(res => {
        this.loadflag = false
        this.$message({ message: '用例运行完成', type: 'success' })
      })
    }
  }
}
</script>
<style scoped>
.iframe_box{
background: #f5f3f3;
    width: 100%;
    height: 1000px;
}
</style>

效果展示
在这里插入图片描述

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

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

相关文章

记一次python 正则表达式

1 正则一般用到的所有字符&#xff0c;具体每个字符的用法自行百度 2 案例&#xff0c;理解了这个案例基本上没问题了&#xff0c;4种格式的字符串&#xff0c;都能提取生日信息 import reline "xxx出生于2001年6月1日" line "xxx出生于2001/6/1" line…

C语言,低洼地问题

最简单的低洼地的特征是前边下坡后边上坡。即三个数&#xff0c;第一个数比第二个数大&#xff0c;第二个数比第三个数小。 但是也有两种特殊情况&#xff1a; 第一种&#xff0c;就是图中序号3的那个低洼地&#xff0c;先下坡再平坡然后又是上坡&#xff0c;这里也算一个低洼…

计算机毕业设计选什么题目好?springboot 大学餐厅菜品推荐和点评系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

element树形控件编辑节点组装节点

需求功能&#xff1a; 编辑树节点&#xff0c;组装节点 <el-scrollbar class"scrollbar-wrapper"><el-tree :data"nodeList" ref"tree" :props"defaultProps" :expand-on-click-node"false"><template slot…

golang jwt(hs,es,rs,ed)密钥生成、加签验签案例

golang JWT加签算法及使用案例 JWT原理 查看官方lib库 官方lib库 选择go语言 数据结构定义 secret.go package secretconst KEY_PATH "keys"type OutSecret struct {Secret string // 哈希签名PublicKeyFile stringPrivateKeyFile string } // 密钥生成 typ…

3D 人体研究

SynBody: Synthetic Dataset with Layered Human Models for 3D Human Perception and Modeling SynBody 是一个新的合成数据集&#xff0c;旨在推动 3D 人体研究的多样性和标注质量。它具有以下三个吸引人的特点&#xff1a; 服装参数化人体模型&#xff1a;可以生成各种不同…

智慧园区能源监控平台:构建绿色智能的未来城市

随着科技的发展的不断进步&#xff0c;在我国城镇化进程越来越快&#xff0c;园区做为产业集群的重要组成部分&#xff0c;其能源消耗和管理上的问题日益突显。为了应对这一考验&#xff0c;智慧园区能源监控平台应时而生&#xff0c;它利用大数据、云计算技术、物联网等尖端技…

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 文章目录 系列文章目录[TOC](文章目录) 前言1、Eureka 两大组件2、Eureka 服务注册与发现3、案例3.1、创建主工程3.1.1、主…

栈的模拟实现(Java)

目录 1、 栈的概念2、栈的使用3、栈的模拟实现 1、 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last I…

gpu cuda矩阵转置

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 问题描述 给定1个二数组&#xff0c;利用gpu转置并返回结果。 cpu 算法 void cpu_matrix_trnspose(int in[N][M], int out[M][N]) {for (int y 0; y < N; y) {fo…

云原生安全应用场景有哪些?

当今数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一&#xff0c;而云计算作为企业数字化转型的关键技术&#xff0c;其安全性也日益受到重视。随着云计算技术的快速发展&#xff0c;云原生安全应用场景也越来越广泛&#xff0c;下面本文将从云原生安全应用场景出发&a…

【Flutter学习】AppBar 和 PopupMenu

App Bar 可以视为页面的标题栏&#xff0c;在 Flutter 中用AppBar组件实现&#xff1b;Popup Menu 是弹出菜单&#xff0c;用PopupMenuButton实现。下面结合这两个组件说明其用法。 1. 代码实现 一个简单的AppBar实现代码如下&#xff1a; import package:flutter/material.…

ResNet分类器量化

1. 动态范围的常用计算方法 Max方法 之前的对称量化和非对称量化就是在用最大最小的办法做的 Histgram 直方图是一种用于可视化信号或数据分布的图形工具。计算动态范围的一种方法是通过查看直方图的范围。动态范围可以由直方图中的最高峰值和最低峰值之间的差异来估算。 E…

国内乳业龙头『君乐宝』×企企通强强联手,搭建采购供应链管理系统+商城平台双管齐下推动低碳转型

乳制品含有丰富且易吸收的营养物质&#xff0c;一直以来被认为是改善国民营养健康的重要产品&#xff0c;随着乳制品加工工艺的发展&#xff0c;市场上出现越来越多种类的乳制品供消费者选择。 随着中国经济发展、城镇化水平提高&#xff0c;以及年轻一代饮奶习惯的改变等因素&…

Table.Group系列_第4参数为全局的情况下,利用第5参数进行分组汇总

原始数据: 部门与职位存在于同一列中 实现功能: 根据筛选条件,可对部门或职位进行统计汇总第一列列名根据筛选自动变更,显示当前统计的维度 实现方式: 1. 构建筛选器内容 在任意空白单元格内输入需要筛选的内容 2. 插入"组合框"控件,并进行相应设置 从开发工具…

解决linux5.15编译时不生成boot.img 的问题

平台&#xff1a;rk3399 &#xff08;与平台关系不大&#xff09; 内核 &#xff1a;linux5.15 下一个linux5.15的内核&#xff0c;编译的时候 make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j6 rk3399-rock960.img 目标rk3399-rock960.img 需要在arch/arm64/boot/dts…

RK3588camera: AHD摄像头转MIPI转接芯片调试

我们常见的摄像头接口一般有MIPI、USB、DVP等等&#xff0c;但是MIPI摄像头受限于高速信号的传输距离问题&#xff0c;导致走线不能太长&#xff0c;这样在安防监控领域、车载等领域&#xff0c;使用就很受限&#xff0c;因此会引入一些技术延长摄像头的数据传输距离&#xff0…

Pytorch之SwinTransformer图像分类

文章目录 前言一、Swin Transformer1.Swin Transformer概览2.Patch Partition3.Patch Merging4.W-MSA5.SW-MSA(滑动窗口多头注意力机制)6.Relative Position bias(相对位置偏移)7.网络结构&#x1f947;Swin Transformer Block&#x1f948;Architecture 二、网络实现1.构建Eff…

【docker】Docker--harbor私有仓库部署与管理——重点

一、理论 1、本地私有仓库 只能在当前机器上做 #首先下载 registry 镜像 docker pull registry #在 daemon.json 文件中添加私有镜像仓库地址 vim /etc/docker/daemon.json { "insecure-registries": ["192.168.10.23:5000"], …

阿里云r8i内存型服务器ECS实例介绍_CPU性能_网络存储测评

阿里云服务器ECS内存型r8i实例CPU采用第四代Intel Xeon可扩展处理器&#xff08;Sapphire Rapids&#xff09;&#xff0c;基频2.7 GHz&#xff0c;全核睿频3.2 GHz&#xff0c;计算性能稳定&#xff0c;CPU内存比1:8&#xff0c;采用阿里云全新CIPU架构&#xff0c;CPU核心2核…