Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)
一. 从数据库中读取全部接口,并写入yaml文件
数据库中的数据存储格式如下图:

import pymysql
import os
import json
# from ruamel import yaml
import yaml #第一步:从数据库中取出所有接口记录存成一个字典
def query(sql):
con=pymysql.connect(host='192.168.249.152',user='root',password='',db='test_api',charset='utf8')#连接数据库
cur=con.cursor()#获取游标
cur.execute(sql)#执行sql
list = []
for id,pathGroup,path,param,method in cur.fetchall():#查询记录,fetchall用法参见注释1
ever = {
'pathgroup': pathGroup,
'path': path,
'param': param if param == '' else json.loads(param),
'method': method
} #将每一个接口形成一个字典格式,param如果写成'param':param的话会有坑(坑1)
#print(ever) list.append(ever)#将每一个接口字典变成列表元素 坑2
result={'content':list} #再变成一个大字典存起来,为了后面写入yaml文件的是一个字典
cur.close()
con.close()
return result #返回大字典 #第二步:写入yaml文件 result_yaml=query('select * from t_api')#调用接口将返回的所有数据存起来(参数为查询数据库所有数据)
print(result_yaml)#打印出来看看 a=os.path.dirname(os.path.realpath(__file__))#os.path.dirname返回目录,os.path.realpath返回绝对路径
print('a===',a)
yamlpath=os.path.join(a,'testcase.yaml')#os.path.join拼接出yaml文件的路径 with open(yamlpath,'w',encoding='utf-8') as f:#w是写入文件,先删除原文件,再重新创建并写入
yaml.dump(result_yaml,f)#yaml.dump把生成的yaml文档写到文件里,yaml.dump接收的第二个参数一定要是一个文本文件或二进制文件 # if __name__=='__main__':
# query('select * from t_api')
注释1:
为了方便演示,我这里新建了一个test数据表,有id,university,name这3个字段,主要内容如下:
查询数据,这里主要用到fetchall、fetchone、fetchamany这3个函数,其中fetchall是查询满足条件的所有记录,fetchone是查询满足条件的第一条记录,fetchamany是自定义查询满足条件的记录,测试代码如下:

程序运行截图如下,已经成功查询出4条记录:
坑1:
这里的param需要写成:'param': param if param == '' else json.loads(param),param如果写成'param':param的话输出的结果就是
{'pathgroup': 'arrange', 'path': 'arrange/kanban/getDeptList', 'param': '{'date': '2019-07-12'}', 'method': 'post'} ,param的value变成了字符串,这样的话写入到yaml文件也是个字符串,在后续解析yaml文件的时候不能解析,这里的value必须是个字典格式,
所以写成了json.loads(param),意思是将字符串转换成字典格式
坑2:
这里最开始写成了:a=list.append(ever),这样写是错误的,list.append()直接写就行不需要前面加个变量
Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)的更多相关文章
- day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告
一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- c#用log4Net将日志写入到Oracle数据库,并写入到文件中
原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...
- 一篇文章告诉你Python接口自动化测试中读取Text,Excel,Yaml文件的方法
前言 不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml.今天讲讲如何读取文件数据 Python也可以读取ini文件,传送门 记住一点:测试的数据是不能写死在代码里面 ...
- python模块:xlsxwriter和xlrd相结合读取、写入excel文件
python模块简单说明: xlsxwriter:负责写入数据 xlrd:负责读取数据 xlsxwriter 官方文档:http://xlsxwriter.readthedocs.org 本实例是刚写 ...
- Python学习笔记_从CSV读取数据写入Excel文件中
本示例特点: 1.读取CSV,写入Excel 2.读取CSV里具体行.具体列,具体行列的值 一.系统环境 1. OS:Win10 64位英文版 2. Python 3.7 3. 使用第三方库:csv. ...
- 34)PHP,PHP从数据库读取数据并在html中显示
首先是我的数据库截图: 然后展示我的php文件: b.php文件: <?php $link= mysqli_connect('localhost','root','root'); // mysq ...
- c++ 读取不了hdf5文件中的字符串
问题描述: 在拿到一个hdf5文件,想用c++去读取文件中的字符串,但是会报错:read failed ps: c++读取hdf5的字符串方法见:https://support.hdfgroup.or ...
- pg_dumpall - 抽出一个 PostgreSQL 数据库集群到脚本文件中
SYNOPSIS pg_dumpall [ option...] DESCRIPTION 描述 pg_dumpall 是一个用于写出("转储")一个数据库集群里的所有 Postgr ...
随机推荐
- js 符号转换 html代码
S转换HTML转义符 //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,''); ...
- maven install
1. install maven under ubuntu apt install maven 2 speed up package download vim ~/.m2/settings.xml & ...
- svn项目迁移至gitlab
关于svn项目迁移有人可能会说,新建一个git项目,把原来的代码直接扔进去提交不完了吗.恩,是的,没错.但是为了保留之前的历史提交记录,还是得做下面的步骤 首先确保本地正常安装配置好git,具体步骤不 ...
- 使用深度学习的超分辨率介绍 An Introduction to Super Resolution using Deep Learning
使用深度学习的超分辨率介绍 关于使用深度学习进行超分辨率的各种组件,损失函数和度量的详细讨论. 介绍 超分辨率是从给定的低分辨率(LR)图像恢复高分辨率(HR)图像的过程.由于较小的空间分辨率(即尺寸 ...
- layui如何自定义弹出层关闭事件
在某些业务场景下,我们需要自定义弹出层关闭事件,代码示例如下: layui.use('layer', function () { var layer = layui.layer; layer.open ...
- .Net Core EF 使用整理合集
1..NetCore中EFCore的使用整理 2..NetCore中EFCore的使用整理(二)-关联表查询 3.EF Core 1.0 和 SQLServer 2008 分页的问题 4.EF Cor ...
- 解决Bootstrap标签页(Tab)插件切换echarts不显示问题
1.参考连接:https://blog.csdn.net/qq_24313955/article/details/78363981 问题描述:在echarts跟bootstrap选项卡整合的时候,默认 ...
- Windows server 2012 英文系统 中文软件显示乱码的问题
1.安装语言包 Start -> Control Panel -> Language 如果没有中文,请点击 Add a language 添加可能需要 联网下载语言包,按照要求下载即可 ...
- Sharding-Jdbc 自定义分库分表-复合分片算法自定义实现
Sharding-JDBC中的分片策略有两个维度,分别是: 数据源分片策略(DatabaseShardingStrategy) 表分片策略(TableShardingStrategy) 其中,数据源分 ...
- md5签名加密(用于java 后台调用短信平台接口实现发短信)
MD5Util 方法 package com.funcanteen.business.action.pay.util; import java.security.MessageDigest; publ ...