本文章介绍python对mysql数据库的基本操作,以及编写一个模拟用户的注册。在自动化测试中,某些人认为是没有必要操作数据库的,理由是大多数的自动化测试都是UI的,非接口的自动化测试,其实,在一个项目的自动化测试中,这种定义很模糊,或者说很不明确,比如在自动化测试中,怎么来验证用户登录成功,用户注册成功?先来说登录,用户登录成功后,验证点首先是用户的昵称,再有么?是的,有,必须得验证url,这是一个完整的测试用例,再来说注册,注册成功后,验证点再我看来,一是到数据库查看,用户注册的信息是否insert到对应了表了,满足一的基础上,再验证注册的用户可不可以登录。所以说,在自动化测试中,对数据库的操作,具体看得场景,业务,具体问题得具体分析。
mysql操作mysql需要安装对应的库,下载地址为:https://pypi.python.org/pypi/MySQL-python/1.2.4,见截图:
下载安装后,在python的命令行中,输入import MySQLdb ,无任何的错误,表示该模块操作成功,见截图:
在上面的截图中,可以看到可以正常的导入MySQLdb库,dir()是查看库的方法。python操作mysql会使用到很多的方法,具体总结经常使用的,见如下的:
connect():连接mysql 的数据库
commit():提交
rollback():回滚
fetchone():返回一条语句
fetchall():返回所有语句
fetchmany():返回多条数据
close():关闭数据库
在这里,前提条件的安装mysql(本人的安装在windows终端中),另外,确保mysql的编码是utf-8,关于修改mysql的编码见如下:
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8
切记,修改mysql的配置文件后,一定要重新启动服务。
操作mysql的命令为:
net start mysql (启动mysql的服务)
mysql -h localhost -u root -p (进入到mysql的命令行)
show database (查看数据库)
use databaseName(到XX数据库)
show tables(查看库下的表)
创建表user,见详细信息的截图:
ok,创建了表user吗,字段分别是id,username,password,email。
增,删,修,查是对数据库的基本操作,先看这部分,见实现的代码:
import MySQLdb
class MySQLHelper(object):
def __init__(self):
pass
@property
def selectMySQL(self):
try:
conn=MySQLdb.connect(host='localhost',user='root',
passwd='server',db='db',,charset='utf8')
cur=conn.cursor()
except Exception,e:
print u'操作mysql数据库失败'
else:
cur.execute('select * from user;')
data=cur.fetchall()
for d in data:
print d
finally:
cur.close()
conn.close()
@property
def insertMySQL(self):
try:
conn=MySQLdb.connect(host='localhost',user='root',
passwd='server',db='db',,charset='utf8')
cur=conn.cursor()
sql="insert into user(id,name,sex,email) VALUES (%s,%s,%s,%s)"
params=(1,'selenium2','boy','USA@qq.com')
cur.execute(sql,params)
conn.commit()
except Exception,e:
print u'操作mysql数据库失败'
else:
print u'插入后表的数据为:'
self.selectMySQL
finally:
cur.close()
conn.close()
@property
def updateMySQL(self):
try:
conn=MySQLdb.connect(host='localhost',user='root',
passwd='server',db='db',,charset='utf8')
cur=conn.cursor()
sql="update user set NAME=%s where id=%s"
params=('selenium webdriver',1)
cur.execute(sql,params)
conn.commit()
except Exception,e:
print u'操作mysql数据库失败'
else:
print u'修改后表的数据为:'
self.selectMySQL
finally:
cur.close()
@property
def deleteMySQL(self):
try:
conn=MySQLdb.connect(host='localhost',user='root',
passwd='server',db='db',,charset='utf8')
cur=conn.cursor()
sql="delete from USER WHERE id=%s"
params=(1)
cur.execute(sql,params)
conn.commit()
except Exception,e:
print u'操作mysql数据库失败'
else:
print u'删除后表的数据为:'
self.selectMySQL
finally:
cur.close()
注释:定义了类MySQLHelper,再分别定义了对数据库操作的增,删,改,查的方法,依据方法名称就可以看到,这里依次来解释代码部分,import MySQLdb是先导入MySQLdb的库,这样可以对mysql进行操作,MySQLdb.connect(host='localhost',user='root',passwd='server',db='db',charset='utf8')是连接mysql数据库host,user,passwd,db很好理解,charset='utf8'主要是为了解决编码问题,mysql的编码为status,python读取mysql后(中文),编码是unicode,导致的结果是中文显示为?,带了charset='utf8'后,读取到的为utf8,这样中文就不会显示为?了。cur=conn.cursor()是创建游标,特别提醒,在删,改,增的方法中,一定要调用commit()方法,这样才提交了数据。
这部分代码还有重构的空间,到下个文章进行重构代码,让代码更加简单。关于这部分,我已整理到百度阅读,可在百度阅读搜索selenium-python自动化测试,就可以可以看到,或者点击“原文”,会直接链接到百度阅读我写的资料。
祝安!