一、创建yaml文件
1. 安装yaml模块
pip install pyyaml
2. 新建yaml文件
右键任意文件夹-->New-->File,输入文件名并以.yaml或.yml结尾
二、yaml文件格式
1. 列表
列表中的所有元素缩进相同,且均已“- ”(一个横杠和一个空格)开头
- 苹果 - 橙子 - 香蕉
代码读取yaml文件的数据
import yaml f = open(r'C:\Users\yitai\Desktop\python相关\综评_json\test1.yaml',encoding='utf-8') res = yaml.load(f) print(type(res)) print(res)
最后打印结果为:
2. 字典
字典中同级别的元素缩进相同,由简单的键 : 值的形式组成(必须得是英文冒号,且冒号后面要跟一个空格)
name : 张三 age : 25 phone : 18700000000
同上代码读取yaml文件的数据,最后打印结果为:
3. 复合结构
- cookieType : 1 dataType: 0 url : user/login method : post detail : 登录 data : username: 张三 password : 123456 check : - 操作成功
最后打印结果为:
三、测试代码
import unittest,requests import ddt from urllib import parse from conf.setting import BASE_URL,COOKIE @ddt.ddt class My_case(unittest.TestCase): base_url = BASE_URL @ddt.file_data(r'C:\Users\****\Desktop\****\case_data\test1.yaml')#ddt帮你读文件,获取文件内容,循环调用函数 def test_request(self,**kwargs): detail = kwargs.get('detail','没写用例描述') self._testMethodDoc = detail #动态的用例描述 url = kwargs.get('url')#url url = parse.urljoin(self.base_url,url)#拼接好url method = kwargs.get('method','get')#请求方式 data = kwargs.get('data',{}) #请求参数 header = kwargs.get('header',{})#请求头 cookieType = kwargs.get('cookieType') check = kwargs.get('check') dataType = kwargs.get('dataType') method = method.lower() #便于处理 if cookieType: cookie = COOKIE else: cookie={} try: if method=='post': if dataType: res = requests.post(url,json=data,cookies=cookie,headers=header).text else: res = requests.post(url,data=data,cookies=cookie,headers=header).text else: res = requests.get(url,params=data,cookies=cookie,headers=header).text except Exception as e: print('接口请求出错') res = e # 列表 for c in check: self.assertIn(c,res,msg='预计结果不符,预期结果:'+c +','+ '实际结果:' +res)
if __name__ == '__main__': unittest.main() suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(My_case)) report_html = BeautifulReport.BeautifulReport(suite) # report_html.report(filename='test', description='用例描述') fmt = '{date}_TestReport.html'.format(date=time.strftime('%Y%m%d%H%M%S')) #生成报告的文件名格式20180329190544_TestReport.html report_html.report(filename=fmt, description='用例描述')
四、yaml文件中参数化
下面以创建体育考试为例
import datetime def get_cur_time(dic: dict): #取系统当前日期 if 'cur_time' in dic.values(): for k in dic: if dic.get(k) == 'cur_time': dic[k] = '%s' % datetime.date.today() return dic
import unittest,requests @ddt.ddt class Physical(unittest.TestCase): base_url = BASE_URL @ddt.file_data(r'C:\Users\yitai\Desktop\python相关\综评_json\case_data\setxqjy.yaml')#ddt帮你读文件,获取文件内容,循环调用函数 def test_request(self,**kwargs): detail = kwargs.get('detail','没写用例描述') self._testMethodDoc = detail #动态的用例描述 url = kwargs.get('url')#url url = parse.urljoin(self.base_url,url)#拼接好url method = kwargs.get('method','get')#请求方式 data = kwargs.get('data',{}) #请求参数 data = get_cur_time(data) #将yaml文件中的cur_time字段替换为系统当前时间 header = kwargs.get('header',{})#请求头 cookieType = kwargs.get('cookieType') check = kwargs.get('check') dataType = kwargs.get('dataType') method = method.lower() #便于处理 if cookieType: cookie = COOKIE else: cookie={} try: if method=='post': if dataType: res = requests.post(url,json=data,cookies=cookie,headers=header).text else: res = requests.post(url,data=data,cookies=cookie,headers=header).text else: res = requests.get(url,params=data,cookies=cookie,headers=header).text except Exception as e: print('接口请求出错') res = e # 列表 for c in check: self.assertIn(c,res,msg='预计结果不符,预期结果:'+c +','+ '实际结果:' +res) if __name__ == '__main__': unittest.main() suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(Physical)) report_html = BeautifulReport.BeautifulReport(suite) # report_html.report(filename='test', description='用例描述') fmt = '{date}_TestReport.html'.format(date=time.strftime('%Y%m%d%H%M%S')) #生成报告的文件名格式20180329190544_TestReport.html report_html.report(filename=fmt, description='用例描述')
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?