如何搭建自动化测试框架?8年测试老司机浅谈一下!

2023-12-16

公司使用python+selenium+pytest来做UI自动化测试,我经历了从0开始搭建自动化工程、开发测试报告web服务、编写测试用例,经过了一段时间的磨合,感觉已经比较顺手了,这里梳理下我采用的自动化工程目录组织结构。

整体目录结构及说明
整个目录结构如下,其中第一级目录和文件有:

conf目录:主要用来存放项目运行环境、执行环境相关的配置参数

logic目录:与项目有关的关键字、业务逻辑封装放到此目录

testsuite目录:测试用例在此目录编写,pytest默认约定test开头的文件和方法为测试用例,不满足条件的不会被执行,内部建议按照特性建立文件夹对测试用例进行分类

utils目录:把与业务无关的实用程序放到此目录,比如自己写的辅助方法

.gitignore文件:git提交忽略文件配置文件

conftest.py文件:pytest的fixture方法可以写在这里,测试用例使用其中的fixture不需要使用import显示引入,不过目前我没有使用这个文件

pytest.ini文件:可以针对pytest进行一些配置,如日志格式和级别等,后面会展示其配置内容

requirements.txt文件:把需要安装的python第三方库写入此文件,需要使用该工程时只需要执行pip install -r requirements.txt就可以一次性全部依赖

runall.py文件:执行全部用例入口,主要用来给jenkins等CI/CD工具拉起自动化任务使用,后面会展示其内容

README.md文件:自动化工程说明文档

project_name
	conf
		settings.py
	logic
		__init__.py
		logic.py
		mysql.py
	testsuite
		feature01
			test_feature01.py
		feature02
			test_feature02.py
	utils
		utils.py
	.gitignore
	conftest.py
	pytest.ini
	requirements.txt
	runall.py
	README.md 

目录组织示例

pytest.ini配置

下面的配置主要是针对日志格式和级别进行了设置,log_cli开头的配置是针对控制台输出设置的,log_file开头的是针对输出到日志文件来设置的,会生成run.log日志文件,在./log目录下,如果log目录不存在会自动创建。

[pytest]
log_cli = 1
log_cli_level = INFO
log_cli_date_format = %Y-%m-%d-%H-%M-%S
log_cli_format = %(asctime)s - %(filename)s - %(module)s - %(funcName)s - %(lineno)d - %(levelname)s - %(message)s
log_file = ./log/run.log
log_file_level = INFO
log_file_date_format = %Y-%m-%d-%H-%M-%S
log_file_format = %(asctime)s - %(filename)s - %(module)s - %(funcName)s - %(lineno)d - %(levelname)s - %(message)s
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834【暗号:csdn999】

requirements.txt

列举依赖的python第三方库,可以指定版本,也可以不指定,不指定的情况下默认安装最新版本。文件示例内容如下,其中selenium、pytest、pytest-html、pytest-xdist是必须的,其他需要根据自己的项目情况来定。

xlrd >= 1.2.0
openpyxl >= 3.0.4
requests >= 2.24.0
psutil >= 5.7.2
pymysql >= 0.10.0
selenium
pytest
pytest-html
pytest-repeat
elasticsearch
pyyaml
jsonpath
python-dateutil
paramiko
pytest-xdist
xlwt
pandas

runall.py

runall.py文件主要是给jenkins等CI/CD工具拉起自动化任务使用的,它的主要作用就是执行pytest.main方法来使用pytest框架来收集并执行测试用例,最终会生成html和xml两份报告。

import os
import time
import pytest
 
from conf.settings import *
 
def new_report_dir():
    return time.strftime("%Y-%m-%d")
 
def new_report_name(project="demo", file_type="html"):
    """file_type:文件后缀名,默认为html
    """
    now = time.strftime("%Y-%m-%d_%H-%M-%S")
    report_name = "{2}_{0}.{1}".format(now, file_type, project)
    return report_name
 
if __name__ == "__main__":
    report_base_dir = r".\report"
    report_html = os.path.join(report_base_dir, new_report_dir(), new_report_name())
    report_xml = os.path.join(report_base_dir, new_report_dir(), new_report_name("demo", "xml"))
    pytest.main(["--html={0}".format(report_html), 
                "--junit-xml={0}".format(report_xml), 
                "-n {0}".format(CPU_NUM),
                "--dist=loadfile"])

但是,pytest默认生成的html报告并不友好,如果还想把历史数据做下统计分析就需要使用生成的xml报告了。比如通过flask框架可以快速定制开发出web服务,通过持续采集解析xml报告写入数据库作为数据源,不仅能更好地展现单次测试报告的数据,而且还能分析历史数据的统计曲线。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何搭建自动化测试框架?8年测试老司机浅谈一下! 的相关文章

  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • msyql 异常,别干着急,70%的问题都在这里!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • MySQL 核心模块揭秘 | 03 期 | 我是一个事务,请给我一个对象

    每个事务都有一个对象 这篇文章我们聊聊 事务的对象从哪里来 要到哪里去 作者 操盛春 爱可生技术专家 公众号 一树一溪 作者 专注于研究 MySQL 和 OceanBase 源码 爱可生开源社区出品 原创内容未经授权不得随意使用 转载请联系
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关

随机推荐

  • 当面试问你接口测试时,不要再说不会了!

    很多人会谈论接口测试 到底什么是接口测试 如何进行接口测试 这篇文章会帮到你 01 前端和后端 在谈论接口测试之前 让我们先明确前端和后端这两个概念 前端是我们在网页或移动应用程序中看到的页面 它由 HTML 和 CSS 编写而成 让我们看
  • 什么是自动化测试,看完你就懂了!

    随着互联网技术的飞速发展 软件本身的规模和复杂度也是逐步增加 为了保证软件项目能够保质保量交付到客户手中 软件测试环节就显得非常重要了 它可以看作是软件项目交付给客户最后一道安全保证 今天给大家聊聊软件测试当中自动化测试相关的知识 希望对大
  • 2023自动化测试框架大对比:哪个更胜一筹?

    所谓工欲善其事 必先利其器 在进行自动化测试时 选择一个合适的框架是至关重要的 因为一个好的测试框架可以大大提高测试效率 减少我们很多工作量 在选择框架之前 我们通常需要对不同的框架进行对比 以便找到最适合我们需求的框架 对框架进行对比的目
  • Python+Appium自动化测试大法,让你的测试效率飞升,绝不等待!封装元素定位方法超详解!

    在 appium自动化测试 脚本运行的过程中 因为网络不稳定 测试机或模拟器卡顿等原因 有时候会出现页面元素加载超时元素定位失败的情况 但实际这又不是bug 只是元素加载较慢 这个时候我们就会使用元素等待的方法来避免这种情况 增加代码的健壮
  • 手动测试 VS 自动化测试:哪一个更适合你的项目?

    什么是手动测试 手动测试是一种不借助任何工具 自动化 来执行测试的测试 在这个测试中 测试人员为代码编写测试用例 对软件进行测试 并给予关于该软件的最终报告 手动测试是耗时的测试 因为它是由人工完成的 并且存在人为错误的可性 进行手动测试以
  • Stm32最小系统板电路设计

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • app性能测试怎么做?内容全在这里了

    1 app性能测试 提到APP的性能测试这个概念比较笼统 因为APP的性能测试分为服务端的性能和手机端的性能测试 1 1 app服务端性能测试 app服务端的性能测试 利用jmeter等工具模拟并发 压测服务器系统 服务端性能测试 一般可以
  • 【计算机网络概述】第一章:概论 1.2什么是网络边缘

    学习目标 网络结构 端系统的客户 服务器模式与对等模式 两种面向网络实施的服务 前言 在第一章 我们学习了什么是 Internet 网络 计算机网络和互联网的知识点 但是由于计算机网络的知识点非常的抽象 内容又多 所以我们要反复的练习 记忆
  • 元素定位,年轻人在 Web UI 自动化成长道路上吃的第一个亏

    元素定位 对于 Web UI 自动化而言 绝对是大家成长道路上的一道绊脚石 很多初学者 都 死 在了元素定位上 从而失去了学习的兴趣 导致职业规划不得不半途而废 那么 今天 我们就使用 Katalon Studio 让工具帮我们进行元素定位
  • 软件测试面试题:如何测试App性能?

    为什么要做App性能测试 如果APP总是出现卡顿或网络延迟的情况 降低了用户的好感 用户可能会抛弃该App 换同类型的其他应用 如果APP的性能较好 用户体验高 使用起来丝滑顺畅 那该应用的用户粘性也必然会提高 那我们该如何做App性能测试
  • STM32用一个定时器执行多任务写法

    文章目录 main c include stm32f4xx h uint32 t Power check times 电量检测周期 uint32 t RFID Init Check times RFID检测周期 int main Timer
  • Python自动化测试之线上流量回放:分析、存储与本地化支持!

    在自动化测试中 线上流量回放是一项关键技术 它可以模拟真实用户请求并重现线上场景 验证系统的性能和稳定性 本文将介绍Python自动化测试中的线上流量回放技术 并提供实战代码 帮助你了解日志分割解析 存储至本地MySQL数据库 以及本地化存
  • 什么是接口与API接口!

    今天有个朋友问我什么接口 你们平时都说在写接口 写的是什么鬼啊 我一开始就想 咦小陈同学怎么突然了解编程接口了 不过听到他后一个提问我知道原来他想的是API接口 不过被我主观意识习惯想成了编程定义上的接口 所以就突发其想 想写篇东西说明一下
  • Python接口自动化测试 —— Requests库学习

    安装 pip install requests 例子 import requests r requests get http www baidu com print r status code print type r print r co
  • 3小时快速入门自动化测试 —— Selenium测试工具

    自动化测试 自动化测试简单来说就是利用自动化测试工具和自动化测试脚本来完成指定的测试任务 测试启动过程无需人工参与 但自动化测试之前的准备工作需要人工手动配置好 它是一种将重复性 繁琐的测试任务交给计算机自动执行的方法 能够显著提高测试效率
  • 现在的00后,真是卷死了呀,辞职信已经写好了·····

    都说00后躺平了 但是有一说一 该卷的还是卷 这不 三月份春招我们公司来了个00后 工作没两年 跳槽到我们公司起薪23K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太
  • 深入理解软件测试中的Web请求流程!

    在软件开发的过程中 软件测试是不可或缺的一环 它有助于确保软件系统的稳定性 可靠性和安全性 而在众多测试中 Web请求流程的测试显得尤为重要 因为几乎所有的现代应用都离不开网络交互 接下来我们将深入探讨软件测试中完整的Web请求流程 帮助大
  • 组件升级回顾

    记录组件升级相关事宜 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 c 组件升级 一 背景 drogenCloud上编译代码 需要升级第三方开源库组件 一开始啥也不懂 不知怎么下手
  • 集成测试、单元测试、系统测试之间的关系和区别

    前言 为了使软件正常工作 所有单元都应集成在一起并正常运行 集成测试就像是要求不同工种的工人修建一个房子 希望他们都团结协作 如何判断他们在一起是否可以按照计划完成建设呢 唯一了解的方法是通过将它们全部拉在一起并测试它们如何相互作用来执行
  • 如何搭建自动化测试框架?8年测试老司机浅谈一下!

    公司使用python selenium pytest来做UI自动化测试 我经历了从0开始搭建自动化工程 开发测试报告web服务 编写测试用例 经过了一段时间的磨合 感觉已经比较顺手了 这里梳理下我采用的自动化工程目录组织结构 整体目录结构及