一般在做自动化的时候大家都会使用到很多数据,一般像接口数据大部分都是存放在数据库中,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文件中存储且如何通过运行参数化模式的自动化测试用例。
文章知识点不是很多,但是很容易进行掌握,主打的一个简单易懂,希望本篇文章对您有所帮助,感谢您的阅读。