一. 从数据库中读取全部接口,并写入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:

fetchall()相关解释:原文地址:https://www.wukong.com/answer/6591280609824342286/?iid=40708017633&app=news_article&share_ansid=6591280609824342286&app_id=13&tt_from=mobile_qq&utm_source=mobile_qq&utm_medium=toutiao_ios&utm_campaign=client_share

为了方便演示,我这里新建了一个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文件中)的更多相关文章

  1. day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告

    一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...

  2. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  3. c#用log4Net将日志写入到Oracle数据库,并写入到文件中

    原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  4. 一篇文章告诉你Python接口自动化测试中读取Text,Excel,Yaml文件的方法

    前言 不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml.今天讲讲如何读取文件数据 Python也可以读取ini文件,传送门 记住一点:测试的数据是不能写死在代码里面 ...

  5. python模块:xlsxwriter和xlrd相结合读取、写入excel文件

    python模块简单说明: xlsxwriter:负责写入数据 xlrd:负责读取数据 xlsxwriter 官方文档:http://xlsxwriter.readthedocs.org 本实例是刚写 ...

  6. Python学习笔记_从CSV读取数据写入Excel文件中

    本示例特点: 1.读取CSV,写入Excel 2.读取CSV里具体行.具体列,具体行列的值 一.系统环境 1. OS:Win10 64位英文版 2. Python 3.7 3. 使用第三方库:csv. ...

  7. 34)PHP,PHP从数据库读取数据并在html中显示

    首先是我的数据库截图: 然后展示我的php文件: b.php文件: <?php $link= mysqli_connect('localhost','root','root'); // mysq ...

  8. c++ 读取不了hdf5文件中的字符串

    问题描述: 在拿到一个hdf5文件,想用c++去读取文件中的字符串,但是会报错:read failed ps: c++读取hdf5的字符串方法见:https://support.hdfgroup.or ...

  9. pg_dumpall - 抽出一个 PostgreSQL 数据库集群到脚本文件中

    SYNOPSIS pg_dumpall [ option...] DESCRIPTION 描述 pg_dumpall 是一个用于写出("转储")一个数据库集群里的所有 Postgr ...

随机推荐

  1. Tensorflow细节-P309-监控指标可视化

    注意下面一个点就ok了 with tf.name_scope('input_reshape'): # 注意看这里,图片的生成 image_shaped_input = tf.reshape(x, [- ...

  2. python基础知识总结大全(转载)

  3. learning java 实例序列化

    对Person类实例进行序例化及反序例化: Person.java public class Person implements java.io.Serializable { private Stri ...

  4. 关于Windows系统里的事后调试

    我一直在想,应用程序抛出未处理的异常和附加到进程的调试器之间会发生什么.显然这些信息就在我眼皮底下,但我是瞎子.Windows调试器关于事后调试的文档包含了您想要知道的所有详细信息. 最常见的应用程序 ...

  5. linux patch 简单学习

    使用patch 我们可以方便的进行软件补丁包处理,以下演示一个简单的c 项目补丁处理 原代码 app.c #include <stdio.h> int main(){ printf(&qu ...

  6. redis windows版本的使用

    ServiceStack的redis-windows下载 下载新的版本解压到硬盘,使用黑窗口切换到路径后执行 redis-server redis.windows.conf 即可看到redis启动到6 ...

  7. vue-cli之路由独立成JS文件之后,如何在路由中获取vuex属性或者设置国际化i18n的当前使用语言

    国际化vue-i18n的使用: import Vue from 'vue'; import VueI18n from 'vue-i18n'; // 引入语言包 import zh from '@/co ...

  8. vue使用axios发送请求,都会发送两次请求

    vue 使用axios,每次的请求都会发送两次,第一次的请求头为options CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sha ...

  9. eclipse juno 怎么安装maven

    步骤如下: 1.下载maven的bin,在apache官方网站可以下载. 2.下载下来之后,解压,找个路径放进去, 把bin的位置设在环境变量里,新建环境变量MAVEN_HOME. 3.在PATH里加 ...

  10. <div> <p> <span>的用法和区别

    <div> 标签可以把文档分割为独立的.不同的部分.它可以用作严格的组织工具,并且不使用任何格式与其关联. 更重要的意义是在网页的动态实现过程中,对划分的区域统一处理,例如换背景色.字体等 ...