超全整理,自动化测试-YAML 配置文件深入解析(详细)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、YAML详情

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化语言。它的设计目标是使数据在不同编程语言之间交换和共享变得简单。

YAML采用了一种简洁、直观的语法,以易于阅读和编写的方式表示数据结构。

YAML广泛应用于配置文件、数据序列化、API设计和许多其他领域。它被许多编程语言和框架所支持,包括Python、Java、Ruby等。在Python中,可以使用PyYAML库来读取和写入YAML文件。

YAML的优点包括易读性高、易于理解、与多种编程语言兼容以及支持丰富的数据结构。它的简洁语法使得配置文件变得更加直观和可维护。无论是作为配置文件格式还是数据交换格式,YAML都是一个强大而受欢迎的选择。

2、YAML语法规范

YAML的语法特点包括:

使用缩进表示层级关系,不使用大括号或者其他符号。
使用冒号来表示键值对。
支持列表和嵌套结构。
使用注释以 “#” 开头。
支持引用和锚点,可以在文档中引用其他部分的数据。

YAML(YAML Ain’t Markup Language)支持多种数据类型,包括字符串、数字、布尔值、列表、字典和空值。

下面是每种数据类型的示例代码和相应的语法规范:

1)字符串
语法规范:使用单引号或双引号将字符串括起来。字符串的引号也可以省略

name: "John"
addr: "长沙"

2)数字
语法规范:直接写入数字即可。

age: 30

3)布尔值
语法规范:使用true表示真,使用false表示假。

isStudent: true
isTeacher: false

4)列表
语法规范:使用短横线(-)表示列表项,列表项之间使用换行进行分隔。

fruits:- apple- banana- orange

5)字典
语法规范:使用冒号(:)表示键值对,键值对之间使用空格进行分隔。

person:name: "John"age: 30

6)空值
语法规范:使用null表示空值。

status: null

这些是YAML支持的常见数据类型和相应的示例代码。您可以根据需要使用这些数据类型来构建复杂的数据结构。

注意:YAML对于缩进非常敏感,使用空格进行缩进来表示层级关系。
缩进的空格数目可以是2个或4个,但在整个文档中必须保持一致。

3、python操作YAML

Python提供了pyyaml库来操作YAML文件,操作yaml文件之前,先安装好pyyaml库。

在终端(Pycharm-Terminal)或命令提示符(cmd)中运行以下命令来安装pyyaml库:pip install pyyaml

1)python读取yaml文件
第一步:提前准备好的yaml文件,yaml文件后缀为.yaml或者.yml

name: "John"
addr: "长沙"
age: 18
status: null
isStudent: true
fruits:- apple- banana- orange
teacher:name: "Alex"age: 30

第二步:使用python读取yaml中的数据

import yamlwith open(file="d.yaml", mode="r",encoding='utf-8') as f:res = yaml.safe_load(f)
print(res)

yaml.safe_load()方法:读取YAML文件中的数据。yaml.safe_load()方法参数是文件对象

运行结果:会自动将yaml中的数据转为python所支持的数据类型

2)python将数据写入yaml文件
第一步:将python指定的变量值写入yaml文件中

import yamldata = {"Person": {"name": "John","age": 30,"address": {"street": "123 Main St","city": "Anytown","state": "CA"}}
}
# 将data变量存储的数据写入YAML文件
with open(file="example.yaml", mode="w") as f:yaml.dump(data, f)

yaml.dump()方法:将数据写入到yaml文件中。yaml.dump()方法的第一个参数是写入数据,第二个参数是文件对象。

第二步:查看example.yaml中的显示

4、YAML结合UI自动化实现KDT

KDT(Keyword-Driven Testing):关键字驱动测试的英文简称。

1)yaml数据准备

# 访问页面
- action: gotoparams:url: 'https://www.baidu.com'
# 输入python
- action: sendkeysparams:locator: ['id','kw']value: 'python'
# 点击搜索按钮
- action: clickparams:locator: ['id','su']
# 断言
- action: assert_text_containsparams:locator: ['id','content_left']excepted: 'python'

2)basepage方法封装

from selenium.webdriver import Chrome,ActionChainsclass BasePage:def __init__(self,driver:Chrome):self.driver = driverdef goto(self,url):'''打开网址'''self.driver.get(url)def click(self,locator):'''点击操作'''el = self.driver.find_element(*locator)try:el.click()except:ActionChains(self.driver).click(el).perform()def sendkeys(self,value,locator=None):'''发送文本操作'''if locator:# 相当于ActionChains中的send_keys_to_element(ele,value),先做点击,再做文本输入el = self.driver.find_element(*locator)el.send_keys(value)else:ActionChains(self.driver).send_keys(value).perform()def assert_text_contains(self,locator,excepted):'''断言文本是否包含指定的内容'''el = self.driver.find_element(*locator)assert excepted in el.text

3)测试用例编写—实现关键字驱动测试

import time
import yaml
from selenium import webdriver
from basepage import BasePage# 1、读取yaml文件中的数据
with open(file='test_keyword.yaml',mode='r',encoding='utf-8') as f:data = yaml.safe_load(f)# 2、测试用例编写
def test_01():# 初始化浏览器操作driver = webdriver.Chrome()driver.implicitly_wait(10)driver.maximize_window()# 实例化BasePage的对象basepage = BasePage(driver)# 遍历读取到的data数据for step in data:# 获取动作名称method_name = step['action']# 获取参数params = step['params']# 获取类中方法名method = getattr(basepage, method_name)# 调用方法,输入参数method(**params)  # 字典解包time.sleep(2)driver.quit()
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不论前路多么崎岖,只要心怀信念和勇气,坚持不懈地追逐梦想,我们定能翻过困难,抵达成功的彼岸,创造出属于自己的辉煌人生。

每个人内心深处都有一个梦想,只有不断奋斗拼搏,才能实现它。坚定信念,勇往直前,让我们迎接挑战,创造辉煌人生!

在人生的道路上,勇敢面对挑战,坚持不懈努力奋斗,只有这样,才能超越自我,实现梦想,创造属于自己的辉煌。

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

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

相关文章

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热,这是一个调试使用并且可以响应快速迭代的Gui库,甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站:https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

[引擎开发] 深入C++模板编程

[本文大纲] 引言 模板实例化 隐式实例化 显式实例化 模板具体化 显式具体化 部分具体化 函数重载和具体化 类型推断 隐式类型转换 支持的类型转换 引用和const 通用引用、引用折叠和完美转发 …

RDMA内核态函数ib_post_recv()源码分析

接上文,上文分析了内核rdma向发送队列添加发送请求的函数ib_post_send,本文分析一下向接收队列添加接收请求的函数ib_post_recv。其实函数调用流程与上文类似,不再重复说明,可参考链接。 函数调用过程 最终会调用到这个函数 下面…

浅谈数据分析工具在智慧城市中的作用

随着城市化、技术进步和人口不断增长,智慧城市已成为当今世界主要技术发展之一。 智慧城市设备依靠描述模型对城市环境产生的大量数据进行数据分析。 在这种城市景观中,智慧城市是技术和可持续的城市地区,利用信息和通信技术(ICT)来改善城市…

C语言每日一题(61)盛最多水的容器

题目链接 力扣 11 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水…

【服务发现--ingress】

1、ingress介绍 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟…

K线实战分析系列之十一:行情力量不足——平头形态

K线实战分析系列之十一:行情力量不足——平头形态 一、平头形态二、不同形态与平头形态的叠加三、总结平头形态 一、平头形态 前一根K线具有较长的实体,后一根K线的实体比较小,无论是多头还是空头的力量到第二根K线都被瓦解了多头上攻&#…

【数据结构与算法】(21)高级数据结构与算法设计之 Dynamic-Programming 动态规划算法 代码示例与详细讲解

目录 4.3 Dynamic-Programming1) Fibonacci降维 2) 最短路径 - Bellman-Ford3) 不同路径-Leetcode 62降维 4) 0-1 背包问题降维 5) 完全背包问题降维 6) 零钱兑换问题-Leetcode322降维零钱兑换 II-Leetcode 518 7) 钢条切割问题降维类似题目 Leetcode-343 整数拆分 8) 最长公共…

python 基础知识点(蓝桥杯python科目个人复习计划51)

今日复习计划:做复习题 例题1:大石头的搬运工 问题描述: 在一款名为“大石头的搬运工”的游戏中,玩家需要 操作一排n堆石头,进行n - 1轮游戏。 每一轮,玩家可以选择一堆石头,并将其移动到任…

【生活】浅浅记录

各位小伙伴们好鸭,今天不是技术文章,浅浅记录一下最近几个月的收获😊 新的一年,一起努力,加油加油!

tinymce问题处理

Vite构建工具下Tinymce踩坑指南 解决方案是在路劲前面增加/,这个跟上面链接有些区别,区别原因应该是如果路由采用的是createWebHashHistory则应该去掉/,如果是createWebHistory则应该加上/ 页面引用,一种异步加载,一种同步加载&…

LeetCode 热题 100 | 二叉树(二)

目录 1 543. 二叉树的直径 2 102. 二叉树的层序遍历 3 108. 将有序数组转换为二叉搜索树 菜鸟做题,语言是 C 1 543. 二叉树的直径 这道题和 124. 二叉树中的最大路径和 太像了 题眼:二叉树的 直径 是指树中任意两个节点之间 最长路径的长度 。…

JS基础(三)-操作和流程控制

一 操作网页元素的步骤 1. 查找网页元素 给标签设置id属性&#xff0c;一个网页中的id值不允许重复 <button id"btn">按钮</button> 2. 给按钮绑定事件&#xff0c;监听用户操作 btn.onclick function(){ 一旦监听到用户的…

人工智能 — 特征选择、特征提取、PCA

目录 一、特征选择1、定义2、原因3、做法4、生成过程5、停止条件 二、特征提取三、PCA 算法1、零均值化&#xff08;中心化&#xff09;2、方差3、协方差4、协方差矩阵5、对协方差矩阵求特征值、特征矩阵6、对特征值进行排序7、评价模型8、代码实现9、sklearn 库10、鸢尾花实例…

【数据结构与算法(Java版)】深度剖析二分查找算法

【二分查找算法】的时间复杂度为O(log n)&#xff0c;其中n为数组的长度。因为每次查找都将查找范围缩小一半&#xff0c;所以算法的时间复杂度是对数级别的。 目录 前言 二分查找算法是什么&#xff1f; 算法实现 方式一&#xff1a;&#xff08;左闭右闭&#xff09; 文…

电机控制常见的外围器件

小型断路器&#xff1a; 这些通通都叫小型断路器&#xff0c;二十年的老电工不一定都认识&#xff0c;不信看看_哔哩哔哩_bilibili 1PIN 2PIN 3PIN 4PIN: 正常情况下火线和零线的电流是相等的&#xff0c;但是漏电的情况下&#xff0c;两线的电流差值大于30毫安&#xff0c;漏…

合纵连横 – 以 Flink 和 Amazon MSK 构建 Amazon DocumentDB 之间的实时数据同步

在大数据时代&#xff0c;实时数据同步已经有很多地方应用&#xff0c;包括从在线数据库构建实时数据仓库&#xff0c;跨区域数据复制。行业落地场景众多&#xff0c;例如&#xff0c;电商 GMV 数据实时统计&#xff0c;用户行为分析&#xff0c;广告投放效果实时追踪&#xff…

笔记本hp6930p安装Android-x86避坑日记

一、序言 农历癸卯年前大扫除&#xff0c;翻出老机hp6930p&#xff0c;闲来无事&#xff0c;便安装Android-x86玩玩&#xff0c;期间多次入坑&#xff0c;随手记之以避坑。 笔记本配置&#xff1a;T9600,4G内存&#xff0c;120G固态160G机械硬盘 二、Android-x86系统简介 官…

2023最新盲盒交友脱单系统源码

源码获取方式 搜一搜&#xff1a;万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新&#xff0c;会陆续更新上 或 源码软件库 最新盲盒交友脱单系统源码&#xff0c;纸条广场&#xff0c;单独抽取/连抽/同城抽取/高质量盒子 新增功能包括心动推荐&#xff…

备考2024年高考全国甲卷文科数学:历年选择题真题练一练

距离2024年高考还有三个多月的时间&#xff0c;最后这个时间&#xff0c;同学们基本上是以刷题为主。刷题的时候最重要的是把往年的真题吃透&#xff0c;因为真题是严格按照考纲出的&#xff0c;掌握了真题后面的知识点&#xff0c;并能举一反三地运用&#xff0c;那么高考的高…