python----数据驱动@ddt.file_data结合yaml文件的使用
一、创建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----数据驱动@ddt.file_data结合yaml文件的使用的更多相关文章
- Python @ddt.file_data() 为.yml 文件实例
一,创建login.yml 文件(以登录接口为例) 1,创建 login.yml 文件,内容如下图: 打印login.yml 文件,代码及显示效果如下: 代码: import yaml,jsonf = ...
- Python数据驱动ddt
import ddtimport unittest """ddt模块包含了一个类的装饰器ddt和两个方法的装饰器: data:包含多个你想要传给测试用例的参数: file ...
- Python数据驱动DDT的应用
在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行 ...
- python 数据驱动ddt使用,需要调用下面的代码,请挨个方法调试,把不用的注释掉
#!/usr/bin/env/python # -*- coding: utf-8 -*- # @Time : 2018/12/15 15:27 # @Author : ChenAdong # @Em ...
- Python基础笔记1-Python读写yaml文件(使用PyYAML库)
最近在搭建自动化测试项目过程中经常遇到yaml文件的读写,为了方便后续使用,决定记下笔记. 一,YAML 简介 YAML,Yet Another Markup Language的简写,通常用来编写项目 ...
- Python 数据驱动ddt 使用
准备工作: pip install ddt 知识点: 一,数据驱动和代码驱动: 数据驱动的意思是 根据你提供的数据来测试的 比如 ATP框架 需要excel里面的测试用例 代码驱动是必须得写代码 ...
- Python - 通过PyYaml库操作YAML文件
PyYaml简单介绍 Python的PyYAML模块是Python的YAML解析器和生成器 它有个版本分水岭,就是5.1 读取YAML5.1之前的读取方法 def read_yaml(self, pa ...
- python 数据驱动(ddt)
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) 实例代码: import ddt import unittest ...
- unittest---unittest数据驱动(ddt)
在做测试的时候,有些地方无论是接口还是UI只是参数数据的输入不一样,操作过程是一样的.重复去写操作过程会增加代码量,我们可以通过参数化的方式解决这个问题,也叫做数据驱动,我们通过python做参数化的 ...
随机推荐
- cookie和sission的原理及异同
Cookie Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持. 通常有三个步骤来识别回头客: 服务器脚本发送 ...
- kibana查询语法 使用教程
1. 使用双引号包起来作为一个短语搜索: "like Gecko" 2. ? 匹配单个字符; * 匹配0到多个字符 例如:kiba?a, el*search ? * 不能用作第一个 ...
- Oarcle之单行函数(下)
1.字符函数 ltrim 去除字符串左边指定字符,如果不设定第二个参数,则默认去除空格 rtrim去除字符串右边指定字符,如果不设定第二个参数,则默认去除空格 例如:select ltrim (‘a ...
- 【视频合集】极客时间 react实战进阶45讲 【更新中】
https://up2.v.sharedaka.com/video/ochvq0AVfpa71A24bmugS5EewhFM1553702519936.mp4 01 React出现的历史背景及特性介绍 ...
- 关于用IIS在.net平台发布网页的一些坑
说明:由于需要显示页面的表格的内容,要用pageOffice插件,而装pageoffice之前需要装.net3.5,直接导入. 为什么要分别装.net4.5和.net3.5 ? 都要装? 问题:刚才 ...
- HAproxy指南之haproxy实现动静分离(案例篇)
HAproxy指南之haproxy实现动静分离(案例篇) 转自 https://blog.51cto.com/blief/1751806 实际应用环境中,往往需要根据业务请求将相关不同请求跳转 ...
- 基础JAVA程序设计(多个类与方法的实现2)
设计一个类代表二维空间的一个点(Point),要求:两个成员变量:x坐标和y坐标. 设计一个类代表二维空间的一个圆(Circle),要求:两个成员变量:一个是圆心,一个是半径:提供计算圆面积的方法:提 ...
- Bugku-CTF之过狗一句话(送给大家一个过狗一句话)
Day25 过狗一句话 http://123.206.87.240:8010/ 送给大家一个过狗一句话<?php $poc="a#s#s#e#r#t"; $poc_1=e ...
- C#线程同步(2)- 临界区&Monitor
文章原始出处 http://xxinside.blogbus.com/logs/46740731.html 预备知识:C#线程同步(1)- 临界区&Lock 监视器(Monitor)的概念 可 ...
- 汇编笔记-DOSBox安装和使用(转载)
我自己安装使用在Windwos10下面. [DOSBox简介] 1. 官方网址:http://www.dosbox.com/. 2. debug功能在win7之后系统已经不自带了,即64位系统是不能直 ...