接口自动化测试框架的封装,一般通过一个关联的yaml文件实现
1.新建一个yaml文件
2.再建一个py文件,用户实现对yaml的读写和清除操作
基本思路就是实现将某值写入yaml文件,其他的py文件使用时可直接从yaml文件中提取,无需再使用将该值变成全局变量的操作了。
#test-yaml.py内容
import os
import yaml
class Yamlutil:
#读取yaml文件
def read_yaml(self):
with open(os.getcwd()+"/extract.yml",mode='r',encoding='utf-8') as f:
value=yaml.load(stream=f,Loader=yaml.FullLoader)
return value;
#写入yaml文件
def write_yaml(self):
with open(os.getcwd()+"/extract.yml",mode='w',encoding='utf-8') as f:
yaml.dump(data=data,stream=f,allow_unicode=True)
#清除文件
def clear_yaml(self):
with open(os.getcwd()+"/extract.yaml",mode='w',encoding='utf-8') as f:
f.truncate()
---------
with open as f的用法:
with open('文件地址',mode='文件打开的模式',encoding='编码形式')
上述代码中os.getcwd() 方法用于返回当前工作目录,详细可查os库内函数用法
mode的取值如下:
r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
yaml基础知识;
图盗用:yaml文件读取load()、写入dump() - 习久性成 - 博客园
读取yaml、yml文件:load()
load(stream=f,Loader=yaml.FullLoader)
①BaseLoader:载入大部分的基础YAML
②SafeLoader:载入YAML的子集,推荐在不可信的输入时使用
③FullLoader:这是默认的载入方式,载入全部YAML
④UnsafeLoader:老版本的载入方式
写入yaml、yml文件:dump()
yaml.dump(data=data,stream=f,encoding='utf-8',allow_unicode=True)
data=,stream=可省略,直接写值
当data数据中有汉字时,加上: encoding='utf-8',allow_unicode=True
例如:
import os
import yaml
yaml_dict = {
"user": "general",
"country": "China",
"gender": "male",
"address": "北京"
}
yaml_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'a.yml')
with open(yaml_dir, 'w', encoding='utf-8', ) as f:
yaml.dump(yaml_dict, f, encoding='utf-8', allow_unicode=True)