测试小白写脚本
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数据库
百度一下,输入以下关键字:python 操作mysql,我们找一个比较合适的文章:
https://www.cnblogs.com/Eva-J/articles/9772614.html
按照文章步骤,我们先安装一下包:
[@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接口,可以让更多人访问。
网友评论