吐血整理,自动化测试Yaml框架配置文件-深入详解(超细)


前言

YAML详解

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

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

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

YAML语法规范

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

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

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

name: "John"
addr: "长沙"

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

age: 30

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

isStudent: true
isTeacher: false

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

fruits:
    - apple
    - banana
    - orange

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

person:
    name: "John"
    age: 30

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

status: null

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

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

Python操作YAML

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

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

pip install pyyaml

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 yaml

with 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所支持的数据类型。

Python将数据写入yaml文件

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

import yaml

data = {
    
    
    "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中的显示

D1

YAML结合UI自动化实现关键字驱动

yaml数据准备

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

basepage方法封装

from selenium.webdriver import Chrome,ActionChains

class BasePage:
    def __init__(self,driver:Chrome):
        self.driver = driver

    def 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

测试用例编写:实现关键字驱动测试

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性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有不断攀登,才能看到更广阔的天空;只有不断奋斗,才能实现自己的梦想;只有坚持不懈,才能书写属于自己的辉煌篇章。愿你在努力中绽放光芒,迎接未来的无限可能!

只有勇敢面对困难,才能书写辉煌的篇章;只有坚持不懈付出努力,才能创造属于自己的奇迹;只要心怀梦想,每一步都是向成功迈进的脚印。相信自己,为梦想拼尽全力!

只有敢于追逐梦想,才能书写人生最精彩的篇章;只有奋力拼搏,才能将无限可能转化为现实。不管前路多么艰难,坚持向前,你一定会收获耀眼的辉煌!

猜你喜欢

转载自blog.csdn.net/csdnchengxi/article/details/131662427