测试小白用Python写删除数据脚本

发表于:2020-9-25 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:茧城寒舍    来源:简书

#
Python
  1. 缘起
  app使用的是微信授权的登陆方式,一个微信账号可以注册一个app的用户。
  app的新手会有相应的业务对应。
  测试需要大量新手账号。
  实际测试中不可能有大量真实的微信账号,即便有也会有用完的一天。
  为了解决上面的问题,那么我们先来看看一般的注册登陆流程:
  微信授权---->客户端----->登陆&注册接口----->持久化用户信息------> 后续操作
  其中我们可控制的就是 持久化用户信息 这一步骤,我们可以通过反复删除或者修改用户信息的方法,来创建多个新的账号。
  那么一般的步骤是这样:
  打开navicat 选择数据库,数据表(demo.user)
  编写sql语句,查出用户信息(select * from demo.user where id = xxxxx)
  修改或者删除对应记录(update | delete )
  微信授权,客户端调用后端接口,重新生成一条数据 (手动操作,点击微信登陆按钮 )
  以上步骤如果手动操作至少要30S时间。
  其中只有第2条,有变化的部分,就是用户id,那么我们完全可以写一个脚本,来减少重复操作。
  2. 思想行动
  谋而后动,我们来想想我们大概要面临的问题:
  如何能快速方便执行脚本(命令行)
  脚本用什么语言(所有可以方便使用的语言都可以)
  如何连接数据库(不知道,面向百度编程吧)
  未知问题(到时候再说!)
  经过激烈到不能在激励的思想行动后,我们决定,开始动手了。
  3. 动手吧
  我们还是用python3吧,用户大,所以我们首先要有个python3环境,如何安装百度,这个很简单。
  3.1 创建目录和文件
  创建一个目录,专门用来放各种小脚本:
[@Hyman:~]$ mkdir min_scripts
  进入目录,创建一个脚本:
[@Hyman:~]$ cd min_scripts/
[@Hyman:min_scripts]$ touch clear_wechat.py
  使用vim编辑clear_wechat.py编写世界通用的HelloWorld程序:
#!/usr/local/bin/python3
# 第一行,是指定python3所在的位置,这样就可以使用.来执行了
import sys   # 导包
print(sys.version)  # 打印版本信息,确定是你要用的python版本
print('Hello World!!!')  
  3.2 修改文件可连接远程mysql数据库
  我们先安装一下包:
[@Hyman:min_scripts]$ pip3 install PyMySQL
Requirement already satisfied: PyMySQL in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.9.3)
  我的已经安装过了,所以会出现上面的提示。
  做一个简单的查询操作:
import pymysql
 
# 打开数据库连接
db = pymysql.connect("localhost","root","root","TESTDB" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 查询语句
sql = "select current_timestamp from dual;"
try:
   
   cursor.execute(sql)# 执行SQL语句
   results = cursor.fetchall()# 获取所有记录列表
     print(results)
except:
   print ("Error: unable to fetch data")
 
# 关闭数据库连接
db.close()
  使用./clear_wechat.py执行脚本结果,发现没有报错,证明连接数据库是正常的,那么我们修改上面代表,让他能完成我们想要的接结果
  3.3 编写删除记录的sql
  我们可以在testQA库下面创建一张 test_user表,结构如下:
CREATE TABLE `test_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
  插入一条测试数据:
insert into test_user values(1,'zhangsan');
  准备好了,我们就修改上面的脚本:
import pymysql
 
# 打开数据库连接
db = pymysql.connect("localhost","root","root","TESTDB" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 查询语句
sql = "delete from test_user where id = 1;"
try:
   
   cursor.execute(sql)# 执行SQL语句
   #results = cursor.fetchall()# 获取所有记录列表
     #print(results)
   db.commit()
except:
   #print ("Error: unable to fetch data")
    db.rollback()
 
# 关闭数据库连接
db.close()
  如果是对于数据的写操作,要有db.commit()操作,这样才能完成操作哦!!!
  3.4 给脚本文件传参
  在上面,我呢看到sql中,id是写死的,在实际操作中,几乎不可能这样,如果写死那么写脚本就变的没有意思,所以,我们要给python文件传递参数,百度一下:python文件传参 https://www.cnblogs.com/lijunjiang2015/p/7689492.html
  第一步,引入sys包(这个我们开头就做了)
import sys
  第二步,我们查实传递一个参数进行打印操作
print(sys.argv[1])
  第三步,传递一个参数给脚本进行测试
[@Hyman:min_scripts]$ ./clear_wechat.py dddddddd
  正常打印,说明是成功的。我们真正要用的可不是打印那么简单,我们把他和sql拼接:
sql = "delete from test_user where id = %s " % sys.argv[1]
  插入一条id为2的数据作为测试数据,执行脚本./clear_wechat.py 2来试一下吧:
[@Hyman:min_scripts]$ ./clear_wechat.py 22
  查看数据表中的内容进行验证,发现数据已经被删除。
  4. 拓展
  实际工作中,提供一个http接口,可以让更多人访问。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号