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 ...
随机推荐
- 持续集成学习1 gitlab和jenkins安装
一.gitlab安装参照链接 https://www.cnblogs.com/linuxk/p/10100431.html 二.安装jenkins 1.获取jenkins源码包 https://blo ...
- 在触发器中使用{ITEM.LASTVALUE}时在首页问题栏信息显示不全
在触发器中使用了系统宏变量,当条件满足时,如果这个宏代表的内容超过了20个字符,那么在首页信息就显示不全,会有一堆省略号 感谢https://blog.csdn.net/yu415907917/art ...
- 产品生命周期(Product Life Circle,PLC)
什么是产品生命周期? 产品生命周期是新产品从开发进入市场到被市场淘汰的整个过程.产品生命周期可分为初创期.成长期.成熟期.衰退期. 产品生命周期有什么用? 在产品不同的生命阶段,公司的业务目的都不同. ...
- 2、kafka集群搭建
以三台为例,先安装一台,然后分发: 一.准备 1.下载 http://kafka.apache.org kafka_2.11-2.0.1.tgz 前面的数字2.11是scala的版本,2.0.1是ka ...
- rust-vmm 学习(二)
eventfd virtio中,guest和vhost通过evnetfd通知对方,见(Virtio ring and virtio-net). REF: Qemu-kvm的ioeventfd创建与触发 ...
- Android入门教程(二)
Hello World 项目 首先当我们启动Android Studio的虚拟机时,可以看到第一个项目Hello World,那么虚拟机中的Hello World!是如何书写的呢? 看看虚拟机运行结果 ...
- ES6 解构对象和数组
1.解构对象 let saveFiled = { extension: "jpg", name:"girl", size:14040 }; ES5 functi ...
- MongoDB 索引 和 explain 的使用
索引基本使用 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得 更快.MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查 询优化技巧. 首先我 ...
- ICEM-实验环
原视频下载地址:https://pan.baidu.com/s/1eSbxiO6 密码: 7114
- MAC 隐藏功能
finder 类: shift+ cmd + G (去指定路径) cmd+↑ (返回) cmd+↓(打开当前选中的文件,如果没有选中的则去选中第一个) cmd+ o (打开当前选中的文件) 以下这些 ...