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 dddd | dddd |
正常打印,说明是成功的。我们真正要用的可不是打印那么简单,我们把他和sql拼接:
sql = "delete from test_user where id = %s " % sys.argv[1] |
插入一条id为2的数据作为测试数据,执行脚本./clear_wechat.py 2来试一下吧:
[@Hyman:min_scripts]$ ./clear_wechat.py 2 | 2 |
查看数据表中的内容进行验证,发现数据已经被删除。
4. 拓展
实际工作中,提供一个http接口,可以让更多人访问。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理