超简单的测试:Yaml文件在Python接口自动化中的应用

60 篇文章 0 订阅
60 篇文章 1 订阅

在这里插入图片描述

一般在做自动化的时候大家都会使用到很多数据,一般像接口数据大部分都是存放在数据库中,Web自动化的数据可以通过Excel进行存放,今天小编介绍一种存放方式,是直接存放在Yaml文件中。

Yaml

Yaml是一种人类可读的数据序列化语言。它通常用于配置文件,但也用于数据存储(例如调试输出)或传输(例如文档标题)。

安装

pip install pyyaml

Yaml的书写格式

可以通过下方格式进行书写,Yaml看中自己的格式,书写时需要注意对齐。

test_01:
  user: admin
  pwd: 123456
  name: anjing

读取Yaml

Yaml格式已经书写完成了,接下来就是读了,下面小编通过Yaml的路径进行读取,然后将读取的内容转换成了字典的形式,方便后续使用这些数据:

import yaml
file_path = r'D:\test_daily\test.yaml'
with open(file_path, 'r', encoding='utf-8') as f:
    t = f.read()
    # 通过字典的形式显示
    result = yaml.load(t,Loader=yaml.FullLoader)
print(result)
------------------------执行结果------------------------------------
{'test_01': {'user': 'admin', 'pwd': 123456, 'name': 'anjing'}}

实战演示

上面已经介绍了如何进行对Yaml读,并且转换了我们经常使用的字典格式,接下来小编用过简单的例子自动化测试例子进行演示如何使用Yaml存放测试数据,下面写了一个正常的Yaml的存储数据。

test_01:
  url: http://apis.juhe.cn/simpleWeather/query
  key: xxxxxxxxxxxxxxxxxxxxxxxxx
  city: 上海

测试数据准备好了,小编这里就直接通过requests进行将Yaml读取到的结果放入到请求参数中:

# coding:utf-8
import yaml
import requests
file_path = r'D:\test_daily\test.yaml'
with open(file_path, 'r', encoding='utf-8') as f:
    t = f.read()
    # 通过字典的形式显示
    result = yaml.load(t,Loader=yaml.FullLoader)

def test_01():
    url = result['test_01']['url']
    data = {
        'key': result['test_01']['key'],
        'city': result['test_01']['city']
    }
    he={
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    r = requests.post(url,headers=he,data=data)
    print(r.text)

运行程序,查看当前程序执行结果,通过执行发现,天气接口已经请求成功了。

图片

参数化方式

有的朋友可能会问了,如果存在一个接口多个参数化的形式怎么存放在Yaml中,或者如何读取这些数据,让其进行参数化方式执行?

下面小编将同一个接口,不同的参数同时执行,这里我们需要通过"-"的符号进行间隔开:

test_01:
url: http://apis.juhe.cn/simpleWeather/query
case:
  -
    key:  331eab8f3481f37868378fcdc76cb7cd
    city:  上海
  -
    key:  331eab8f3481f37868378fcdc76cb7cd
    city:  北京

小编通过上述的方法,继续读取Yaml文件,看看数据存在同一目录级别下,而且返回的格式为字典,方便我们进行提取:

在这里插入图片描述

如果想要通过Yaml的形式进行参数化,这里还需要用到Pytest下的参数化模块parametrize模块进行完成,可以参考以下的代码:

# coding:utf-8
import yaml
import pytest
import requests
file_path = r'D:\test_daily\test.yaml'
with open(file_path, 'r', encoding='utf-8') as f:
    t = f.read()
    # 通过字典的形式显示
    result = yaml.load(t,Loader=yaml.FullLoader)
case = result['case']
@pytest.mark.parametrize('data',case)
def test_01(data):
    data = {
        'key': data['key'],
        'city': data['city']
    }
    he={
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    r = requests.post(result['url'],headers=he,data=data)
    print(r.text)

通过运行程序,我们可以很清楚的看到,两条数据同一个接口,均请求成功。

图片

总结

小编通过两个简单的案例,进行介绍了Yaml在我们自动化测试过程中如何存储数据,通过Python进行读取Yaml文件数据,以及在自动化测试过程中参数化的数据如何在Yaml文件中存储且如何通过运行参数化模式的自动化测试用例。

文章知识点不是很多,但是很容易进行掌握,主打的一个简单易懂,希望本篇文章对您有所帮助,感谢您的阅读。


好文推荐

听说转行软件测试只能自学,培训机构是个坑?

2023年,软件测试还能学吗?别学了,软件测试岗位饱和了…

从事软件测试8年,聊聊我是怎么从零基础到年薪40万的

为什么说测试岗位是巨坑?10年测试人告诉你千万别上当

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值