YAML 深入解析:从语法到最佳实践

什么是YAML

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化语言。它的设计目标是使数据在不同编程语言之间交换和共享变得简单。YAML采用了一种简洁、直观的语法,以易于阅读和编写的方式表示数据结构。

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

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

YAML语法规范

YAML的语法特点包括:

使用缩进表示层级关系,不使用大括号或者其他符号。

使用冒号来表示键值对。

支持列表和嵌套结构。

使用注释以 “#” 开头。

支持引用和锚点,可以在文档中引用其他部分的数据。

YAML(YAML Ain’t Markup Language)支持多种数据类型,包括字符串、数字、布尔值、列表、字典和空值。下面是每种数据类型的示例代码和相应的语法规范:

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

  1. name: "John"

  2. addr: "长沙"

  1. 数字

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

age: 30
  1. 布尔值

语法规范:使用true表示真,使用false表示假。

  1. isStudent: true

  2. isTeacher: false

  1. 列表

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

  1. fruits:

  2. - apple

  3. - banana

  4. - orange

  1. 字典

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

  1. person:

  2. name: "John"

  3. age: 30

  1. 空值

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

status: null

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

注意 :

YAML对于缩进非常敏感,使用空格进行缩进来表示层级关系。

缩进的空格数目可以是2个或4个,但在整个文档中必须保持一致。

python操作YAML

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

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

1.python读取yaml文件

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

  1. name: "John"

  2. addr: "长沙"

  3. age: 18

  4. status: null

  5. isStudent: true

  6. fruits:

  7. - apple

  8. - banana

  9. - orange

  10. teacher:

  11. name: "Alex"

  12. age: 30

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

  1. import yaml

  2. with open(file="d.yaml", mode="r",encoding='utf-8') as f:

  3. res = yaml.safe_load(f)

  4. print(res)

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

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

在这里插入图片描述

2.python将数据写入yaml文件

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

  1. import yaml

  2. data = {

  3. "Person": {

  4. "name": "John",

  5. "age": 30,

  6. "address": {

  7. "street": "123 Main St",

  8. "city": "Anytown",

  9. "state": "CA"

  10. }

  11. }

  12. }

  13. # 将data变量存储的数据写入YAML文件

  14. with open(file="example.yaml", mode="w") as f:

  15. yaml.dump(data, f)

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

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

图片

YAML结合UI自动化实现KDT

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

1.yaml数据准备

在这里插入图片描述

2.basepage方法封装
  1. from selenium.webdriver import Chrome,ActionChains

  2. class BasePage:

  3. def __init__(self,driver:Chrome):

  4. self.driver = driver

  5. def goto(self,url):

  6. '''打开网址'''

  7. self.driver.get(url)

  8. def click(self,locator):

  9. '''点击操作'''

  10. el = self.driver.find_element(*locator)

  11. try:

  12. el.click()

  13. except: ActionChains(self.driver).click(el).perform()

  14. def sendkeys(self,value,locator=None):

  15. '''发送文本操作'''

  16. if locator:

  17. # 相当于ActionChains中的send_keys_to_element(ele,value),先做点击,再做文本输入

  18. el = self.driver.find_element(*locator)

  19. el.send_keys(value)

  20. else: ActionChains(self.driver).send_keys(value).perform()

  21. def assert_text_contains(self,locator,excepted):

  22. '''断言文本是否包含指定的内容'''

  23. el = self.driver.find_element(*locator)

  24. assert excepted in el.text

3.测试用例编写—实现关键字驱动测试
  1. import time

  2. import yaml

  3. from selenium import webdriver

  4. from basepage import BasePage

  5. # 1、读取yaml文件中的数据

  6. with open(file='test_keyword.yaml',mode='r',encoding='utf-8') as f:

  7. data = yaml.safe_load(f)

  8. # 2、测试用例编写

  9. def test_01():

  10. # 初始化浏览器操作

  11. driver = webdriver.Chrome() driver.implicitly_wait(10)

  12. driver.maximize_window()

  13. # 实例化BasePage的对象

  14. basepage = BasePage(driver)

  15. # 遍历读取到的data数据

  16. for step in data:

  17. # 获取动作名称

  18. method_name = step['action']

  19. # 获取参数

  20. params = step['params']

  21. # 获取类中方法名

  22. method = getattr(basepage, method_name)

  23. # 调用方法,输入参数

  24. method(**params) # 字典解包

  25. time.sleep(2)

  26. driver.quit()

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值