一、yaml文件格式和语法规则
1、yaml文件格式
键值对的格式,对应python的字典dict
数组的格式,对应python的列表list
2、yaml文件语法规则
①严格区分大小写
②用空格缩进表示层级关系,同一层级关系左对齐即可
③用 - 表示列表;用冒号+空格(:空格)表示字典
二、yaml文件编写测试用例示例
- features: 模块 storys: 接口名称 titles: 用例名称 request: method: 请求方法 url: 请求地址 jsons/params:请求内容 extract:#用jsonpath提取中间变量存放在extract变量文件中 vilidate:#断言 codes: 200 #响应状态码 success: True #响应内容
说明:模板内容非固定格式,可以根据项目需要做不同的修改
三、yaml文件的读、写和清除方法封装
#写入yaml文件:以a+的方式追加写入
#allow_unicode=True 解决文件存储时unicode编码问题
def write_extract_yaml(filename,data):
with open(filename,'a+',encoding='utf-8') as f:
yaml.dump(data, stream=f, allow_unicode=True)
#读取yaml文件
def read_extract_yaml(filename):
with open(filename,'r',encoding='utf-8') as f:
value = yaml.load(f,yaml.FullLoader)
return value
#清空yaml文件
def clear_extract_yaml(filename):
with open(filename, 'w', encoding='utf-8') as f:
f.truncate()
说明:
①yaml.dump()方法中allow_unicode=True是为了解决文件写入时unicode编码问题
②yaml.load()方法需要指定Loader,yaml.FullLoader属于方法默认加载器,为了禁止执行任意函数,增强方法的安全性。(其他方式:yaml.safe_load()可以达到相同的效果)
四、读取testcase目录下的所有yaml文件封装方法
#读取testcase目录下所有的yaml测试用例文件名称
def read_all_yamlname(self):
#打印testcase目录下所有的目录和文件名称
yaml_name_list = []
testcaselist = os.listdir(self.testcasepath)
for i in testcaselist:
#判断是否是目录
if os.path.isdir(os.path.join(self.testcasepath, i)):
m = re.search('^.*?case$', i)
if m:
#返回testcase目录下的目录名称
m_path = os.path.join(self.testcasepath, m.group())
m_list = os.listdir(m_path)
for i in m_list:
j = re.search('^.*?.yaml$', i)
if j:
j_path = os.path.join(m_path,j.group())
yaml_name_list.append(j_path)
#判断是否是文件
elif os.path.isfile(os.path.join(self.testcasepath, i)):
n = re.search('^.*?.yaml$', i)
if n:
yaml_name_list.append(n.group())
return yaml_name_list
def read_all_testcase(self):
yaml_name_list = yamlUtil().read_all_yamlname()
caseinfoList = []
for i in yaml_name_list:
caseinfo = yamlUtil().read_case_yaml(i)
caseinfoList.extend(caseinfo) #用append方法,会多增加一层列表list
return caseinfoList
总结:人生没有如果,只有后果和结果