怎样通过excel录入来批量造数据
背景:
自动化测试除了验证系统功能外,还能够为测试人员根据测试要求造数据实现测试需要!但是一般的自动化测试,都是在编写脚本的时候,写死在程序里的。所以本文是为了在满足系统操作流程的基础上,根据测试的要求实现测试数据的编写。
本文涉及两个新的知识点内容:
1. 读取excel数据
2. python数据库读写
2.1 创建一个简单的表
一、编写思路:
从需求出发,主要找到两个关键字:批量、要求、数据。考虑到两种实现方式,1. 页面录入 2. excel数据填写;考虑到页面操作虽然看上去很方便!但是每次都需要重新编写,而且实现批量操作也很难,最重要的是,开发成本太大!要测试人员编写一个完整的测试网页!第一步确认了:使用excel获取造数据需求。
数据记录在excel中,获取数据考虑到两种方式:1. 将excel中的数据保存在数据库中,之后系统通过数据库交互完成数据插入;2. 直接通过读取excel数据对信息进行交互。我先是通excel读取的方式操作了下,实验后发现,如果每次调用数据的时候读取excel,找数据的成本很大;批量操作根据行读取数据,也比较难搞,当然做也是肯定能够做的,只是成本比较大!所以,经过了2个小时的尝试,果断选择了数据库存取。
当然,数据库的问题也很多!首先你需要搭建个本地数据库;还需要创建数据表,创建字段,还可能涉及到字符集!不过,上述内容由于之前踩过坑了,如果需求可以看看博客里的自学mysql的方式。所以实现逻辑修改成了:读取excel一次性存入数据库,之后每次交互,都是系统与数据库之间进行交互。
实现的第一个小步:excel读取数据,并存入数据库。
分解动作1:读取excel。
分解动作1.1:引入读取excel库:
import xlrd
分解动作1.2:打开指定文件
workbook = xlrd.open_workbook(Excel_Path) # excel文本举例:u'D://自动化造数据模板.xlsx'
Sheet_Name = workbook.sheet_by_name(u'借款数据') # 定位excel中,名为“借款数据”的sheet页
分解动作1.3:读取列表数据
Term_Of_Loan = Sheet_Name.cell_value(1, 2) # 读取excel中,第二行,第三列的数据
分解动作1.4:根据数据库字段要求,修改文本属性【未修改,插入数据库提示格式错误】
Loan_Amount = int(Sheet_Name.cell_value(Count_Num, 3)) # int() 强制转换为int型
分解动作2:将读取的excel插入数据库
在进行分解动作之前,需要先创建一个数据表,本人使用的是Navicat,设计表。之前虽然没建过,但是也看到过猪跑,建表无非定义字段名、字段属性、字段长度、添加备注。
分解动作2.1:引入数据库
import pymysql
分解动作2.2:链接数据库
db = pymysql.connect('localhost', 'root', '123456', 'test', charset='utf8')
分解动作2.3:创建游标
cursor = db.cursor()
分解动作2.4:编写插入脚本:
query = 'insert into tb_bbh_dv_Invodata (ID, C_JKRDH,C_JKLX, C_JKQX, N_JKJE, N_NLV,N_JX, N_SXF, N_GLF, N_ZZSXF, N_QTJE, N_ZDTZJE, DT_CreatTime,B_SFCJ) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
分解动作2.5:执行插入脚本
cursor.execute(query, (ID, JKR_ID, Type_Of_Loan, Term_Of_Loan, Loan_Amount, Annual_Interest_Rate, Increase_Interest, Service_Charge, Management_Expense, Debt_Service_Fee, Amount_Of_Investment, Maximum_Investment, Create_Time,'0'))
db.commit()# 这句有什么用?! 不加试试,能通过算你厉害
分解动作2.5.1:写的时候遇到个问题,方法1,中有方法2,且,方法1和方法2同时使用到了数据库。方法1没有关闭数据库,方法二再调用,可能有问题!所以呢,可以将方法1的数据库连接,直接传给方法二,这样方法二只管调用,不需要考虑关闭数据库。
分解动作2.6:关闭游标以及数据库
小结:以上的两套分解动作整合到一起,就能够实现excel读取数据,存入数据库的功能,完整代码如下:
有需要的小伙伴可点击进入扣群下载,群内不定期的会分享资料教程,点击直达链接:https://jq.qq.com/?_wv=1027&k=55fzJrT
怎样通过excel录入来批量造数据的更多相关文章
- Jmeter(二十三)Jmeter-Question之“批量造数据”
日常工作中,无论是在做功能测试.接口测试还是性能测试,经常会有这么一个场景出现,“那个谁谁谁,帮我加几条订单”,“那个某某某,给购物车增添几个产品”,“在数据库加几百条数据”...等等,通常少数量,或 ...
- 基于Spring MVC实现基于form表单上传Excel文件,批量导入数据
在pom.xml中引入: <!--处理2003 excel--> <dependency> <groupId>org.apache.poi</groupId& ...
- Oracle 批量造数据
1.通过存储过程方式 CREATE OR REPLACE procedure XXZY.p_test is i number; begin .. loop INSERT INTO test_job V ...
- 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库
将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...
- PHP批量导出数据为excel表格
之前用插件phoexcel写过批量导入数据,现在用到了批量导出,就记录一下,这次批量导出没用插件,是写出一个表格,直接输出 //$teacherList 是从数据库查出来的二维数组 $execlnam ...
- java操作Excel之POI(6)使用POI实现使用模板批量添加数据
action是用struts2写的:前端界面easyUI写的, 前端: <!DOCTYPE html> <html> <head> <meta charset ...
- java操作Excel之POI(5)利用POI实现使用模板批量导出数据
后台导出方法: 在源文件夹src下面放个准备好的模板:/com/cy/template/userExportTemplate.xls,这个模板有头部一行: /** * 后台导出方法 * 利用POI实现 ...
- (转)使用Excel批量给数据添加单引号和逗号
在使用PLSQL连接oracle数据库处理数据的过程中,常用的操作是通过ID查询出数据,ID需要附上单引号,如果查询的ID为一条或者几条,我们手动添加即可,但是如果是几百条.几千条的话,就需要使用一些 ...
- java使用POI实现Excel批量导入数据
1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...
随机推荐
- 基于SpringBoot + Mybatis实现 MVC 项目
1.预览: (1)完整项目结构 (2) 创建数据库.数据表: [user.sql] SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- ...
- myql忽略大小写问题解决
linux系统下启动mysql默认是区分大小写的,如果刚好项目中使用的表名与数据库中表名大小写有冲突,此时就需要忽略mysql表名大小写了. 解决方式一: 1.关闭数据库 mysqladmin -ur ...
- openpyxl中遇到TypeError: 'generator' object is not subscriptable的问题和解决方案
今天在搭建驱动数据框架用到了一个叫 openpyxl的包用来解析excel数据 随后就出现了TypeError: 'generator' object is not subscriptable的bug ...
- ElasticSearch Cardinality Aggregation聚合计算的误差
使用ES不久,今天发现生产环境数据异常,其使用的ES版本是2.1.2,其它版本也类似.通过使用ES的HTTP API进行查询,发现得到的数据跟javaClient API 查询得到的数据不一致,于是对 ...
- vue使用vant-ui实现上拉加载、下拉刷新和返回顶部
vue使用vant-ui实现上拉加载.下拉刷新和返回顶部 vue现在在移动端常用的ui库有vant-ui和mint-ui,上拉加载.下拉刷新和返回顶部也是移动端最基础最常见的功能.下面就用vant-u ...
- Python3程序设计指南:01 过程型程序设计快速入门
大家好,从本文开始将逐渐更新Python教程指南系列,为什么叫指南呢?因为本系列是参考<Python3程序设计指南>,也是作者的学习笔记,希望与读者共同学习. .py文件中的每个估计都是顺 ...
- python编程基础之三十
时间模块: 时间戳:就是当前是键距离1970年1月1日0:0:0的秒数,后面还带小数,可以说是非常精确 时间的表示形式: a.以整数或者浮点数表示一个以秒为单位的时间间隔,这个时间的基础值1970.1 ...
- Win10实现多用户同时进行远程桌面连接的解决方案
Win10无法实现多用户远程桌面连接的解决方案以下方法解决Win10无法同时多用户登录.推荐:win10正式版下载 以下为必要步骤需先进行组策略设置,完成后再选择方法1或2(推荐方法2): 远程桌面连 ...
- [WPF自定义控件库] 模仿UWP的ProgressRing
1. 为什么需要ProgressRing 虽然我认为这个控件库的控件需要模仿Aero2的外观,但总有例外,其中一个就是ProgressRing.ProgressRing是来自UWP的控件,部分代码参考 ...
- Chrome常见黑客插件及用法
目录 0x00 Web Developer(网页开发者) 0x01 Firebug Lite for Google Chrome (Firebug精简版) 0x02 d3coder (decod ...