简介:

数据驱动数据库驱动方式,就是数据配置在数据库里面,主程序调用的时候每次用从数据库里取出的数据作为参数,进行操作,

需要掌握的地方是对数据库的操作,要灵活的找到目标数据

测试数据:

创建数据库、表

Sql.py

#encoding=utf-8

# 创建gloryroad数据库sql语句

create_database = 'CREATE DATABASE IF NOT EXISTS gloryroad DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'

# 创建testdata表

drop_table_if_exist_sql="drop table if exists testdata;"

create_table = """

create table testdata(

id int not null auto_increment comment '主键',

bookname varchar(40) unique not null comment '书名',

author varchar(30) not null comment '作者',

test_result varchar(30) default null,

primary key(id)

)engine=innodb character set utf8 comment '测试数据表';

"""

数据库初始化,创建测试数据

DatabaseInit.py

#encoding=utf-8

import pymysql

from Sql import *

class DataBaseInit(object):

# 本类用于完成初始化数据操作

# 创建数据库,创建数据表,向表中插入测试数据

def __init__(self, host, port, dbName, username, password, charset):

self.host = host

self.port = port

self.db = dbName

self.user = username

self.passwd = password

self.charset = charset

def create(self):

try:

# 连接mysql数据库

conn = pymysql.connect(

host = self.host,

port = self.port,

user = self.user,

passwd = self.passwd,

charset = self.charset

)

# 获取数据库游标

cur = conn.cursor()

# 创建数据库

cur.execute(create_database)

# 选择创建好的gloryroad数据库

conn.select_db("gloryroad")

# 创建测试表

cur.execute(drop_table_if_exist_sql)

cur.execute(create_table)

except pymysql.Error as e:

raise e

else:

# 关闭游标

cur.close()

# 提交操作

conn.commit()

# 关闭连接

conn.close()

print (u"创建数据库及表成功")

def insertDatas(self):

try:

# 连接mysql数据库中具体某个库

conn = pymysql.connect(

host = self.host,

port = self.port,

db = self.db,

user = self.user,

passwd = self.passwd,

charset = self.charset

)

cur = conn.cursor()

# 向测试表中插入测试数据

sql = "insert into testdata(bookname, author) values(%s, %s);"

res = cur.executemany(sql, [('Selenium WebDriver实战宝典', '吴晓华'),

('HTTP权威指南', '古尔利'),

('探索式软件测试', '惠特克'),

('暗时间', '刘未鹏')])

except pymysql.Error as e:

raise e

else:

conn.commit()

print("初始数据插入成功")

# 确认插入数据成功

cur.execute("select * from testdata;")

for i in cur.fetchall():

print (i[1], i[2])

cur.close()

conn.close()

if __name__ == '__main__':

db = DataBaseInit(

host="localhost",

port=3306,

dbName="gloryroad",

username="root",

password="test",

charset="utf8"

)

db.create()

db.insertDatas()

print("数据库初始化结束")

单独执行结果:

创建数据库及表成功

初始数据插入成功

Selenium WebDriver实战宝典 吴晓华

HTTP权威指南 古尔利

探索式软件测试 惠特克

暗时间 刘未鹏

数据库初始化结束

MysqlUtil.py

#encoding=utf-8

import pymysql

from DatabaseInit import DataBaseInit

class MyMySQL(object):

def __init__(self, host, port, dbName, username, password, charset):

# 进行数据库初始化

dbInit = DataBaseInit(host, port, dbName, username, password, charset)

dbInit.create()

dbInit.insertDatas()

self.conn = pymysql.connect(

host = host,

port = port,

db = dbName,

user = username,

passwd = password,

charset = charset

)

self.cur = self.conn.cursor()

def getDataFromDataBases(self):

# 从testdata表中获取需要的测试数据

# bookname作为搜索关键词,author作为预期关键词

self.cur.execute("select bookname, author from testdata;")

# 从查询区域取回所有查询结果

datasTuple = self.cur.fetchall()

return datasTuple

def closeDatabase(self):

# 数据库后期清理工作

self.cur.close()

self.conn.commit()

self.conn.close()

if __name__ == '__main__':

db = MyMySQL(

host="localhost",

port=3306,

dbName="gloryroad",

username="root",

password="test",

charset="utf8"

)

print (db.getDataFromDataBases())

单独执行的结果:

创建数据库及表成功

初始数据插入成功

Selenium WebDriver实战宝典 吴晓华

HTTP权威指南 古尔利

探索式软件测试 惠特克

暗时间 刘未鹏

(('Selenium WebDriver实战宝典', '吴晓华'), ('HTTP权威指南', '古尔利'), ('探索式软件测试', '惠特克'), ('暗时间', '刘未鹏'))

最后执行的脚本

data_driven_by_mysql_1.py

#encoding=utf-8

from selenium import webdriver

import time

import datetime

from openpyxl import *

import pymysql

def get_test_data():

conn = pymysql.connect(

host = "localhost",

port = 3306,

user = "root",

passwd = "test" ,

db = "gloryroad",

charset = "utf8"

)

# 使用cursor()方法获取数据库的操作游标

cursor = conn.cursor()

cursor.execute("select * from testdata;")

resSet = cursor.fetchall()

print("共%s条数据。" %len(resSet))

print( resSet)

# 关闭游标

cursor.close()

# 提交事务

conn.commit()

# 关闭数据库连接

conn.close()

return resSet

def update_test_result(data,result):

conn = pymysql.connect(

host = "localhost",

port = 3306,

user = "root",

passwd = "test" ,

db = "gloryroad",

charset = "utf8"

)

# 使用cursor()方法获取数据库的操作游标

cursor = conn.cursor()

print( 'update testdata set test_result="'+result+'" where bookname="'+data+'";')

update=cursor.execute('update testdata set test_result="'+result+'" where bookname="'+data+'";')

print( u"修改语句受影响的行数:", update)

# 关闭游标

cursor.close()

# 提交事务

conn.commit()

# 关闭数据库连接

conn.close()

driver = webdriver.Firefox(executable_path="D:\\python\\geckodriver")

test_result=[]

for data in get_test_data():

try:

driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys(data[1])

driver.find_element_by_id("su").click()

time.sleep(3)

assert data[2] in driver.page_source

update_test_result(data[1], "成功")

except AssertionError as e:

print( data[2] + "断言失败")

update_test_result(data[1], "断言失败")

except Exception as e:

print(e)

print(data[1] + "测试执行出现异常")

update_test_result(data[1], "执行出现异常")

driver.quit()

执行结果:

D:\python\python.exe D:/db_data/data_driven_by_mysql_1.py

共4条数据。

((1, 'Selenium WebDriver实战宝典', '吴晓华', None), (2, 'HTTP权威指南', '古尔利', None), (3, '探索式软件测试', '惠特克', None), (4, '暗时间', '刘未鹏', None))

update testdata set test_result="成功" where bookname="Selenium WebDriver实战宝典";

修改语句受影响的行数: 1

update testdata set test_result="成功" where bookname="HTTP权威指南";

修改语句受影响的行数: 1

update testdata set test_result="成功" where bookname="探索式软件测试";

修改语句受影响的行数: 1

update testdata set test_result="成功" where bookname="暗时间";

修改语句受影响的行数: 1

Process finished with exit code 0

总结:数据驱动DB驱动、Excel驱动方式和txt驱动方式原理大同小异,都是把数据从文件中取出来,传进主程序,脚本运行完毕后再把结果写入文件中;

难点在于对不同的文件类型进行读取可能需要专门的程序包来处理;都是对基础的运用进行整合,真正项目上用到肯定比这复杂的多。。。

python数据驱动库_python webdriver测试框架--数据驱动DB驱动相关推荐

  1. python webdriver 测试框架-数据驱动xml驱动方式

    数据驱动xml驱动的方式 存数据的xml文件: TestData.xml: <?xml version="1.0" encoding="utf-8"?&g ...

  2. 基于Python的接口自动化unittest测试框架和ddt数据驱动详解

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

  3. Pytest 测试框架——数据驱动

    引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理.今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest ...

  4. python api测试框架_python api 测试框架

    python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...

  5. python做性能测试框架_python api 测试框架

    python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...

  6. python 渗透框架_Python渗透测试框架:PytheM

    PytheM是一个Python渗透测试框架.它只能在osnGNU/Linux OS系统上运行. 安装$sudo apt-get update $sudo apt-get install libasou ...

  7. python没有库_Python开发者必备6个基本库,这个都没有怎么做开发呢

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:py3study ( 想要学习Python?Pytho ...

  8. python 数据分析 库_Python数据分析库

    python 数据分析 库 什么是数据分析? (What is Data Analytics?) Data is power. Insights acquired from data is the k ...

  9. python 异常处理 库_python捕获数据库异常处理

    [转载]Python简介 Python是一种解析性的,交互式的,开源的面向对象的编程语言,类似于Perl.Tcl.Scheme或Java. Python是一种面向对象.直译式的计算机程序设计语言,也是 ...

最新文章

  1. DWR提示DWRUtil未定义的问题
  2. python until语句_Python3 循环
  3. 合成存储方法,局部/全局变量
  4. java数据类型的一些注意事项
  5. Flex 弹性盒基本语法
  6. JAVA 之反射(基础概念) 几个主要常用的重要的方法
  7. mfc实现秒表小项目
  8. 图像降噪算法——稀疏表达:K-SVD算法
  9. Linux下Tomcat启动报错:port already in use
  10. 解决华为交换机S5700无法解除ip/Mac绑定的问题
  11. 常用计算机键,计算机快捷键40个_计算机常用快捷键大全分享
  12. KR C与ANSI C
  13. 制作一个简单HTML个人网页网页(HTML+CSS)
  14. 修改U盘、移动硬盘时提示目标文件夹访问被拒绝的问题解决思路
  15. 共享存储设备DAS、NAS、SAN;Udev 、Multipath多路径(基础知识)
  16. 鸿蒙系统和鸿鹄818,华为智慧屏将应用鸿蒙系统,搭载海思鸿鹄818芯片
  17. vue使用姓名做默认头像 vue-avatar
  18. 对list的一些常用操作
  19. 掌舵9年,艾伦研究所创始CEO 光荣退休!他曾预言中国AI将领跑世界
  20. 华为云服务器还需要确定位置吗,有了云服务器还需要主机吗

热门文章

  1. 答题卡图像识别 需求分析、市场分析和技术实现
  2. 总裁演说思维模式口才训练小方法:主动问候寒暄法
  3. VMware16安装Ubuntu22.04.1详细教程
  4. dell设置从ssd启动_戴尔笔记本如何设置从ssd启动系统
  5. iconv文件格式转换
  6. 性能压力测试TPS优化之路---SYN__
  7. 简单易懂的沉浸式状态栏使用详解(1)——状态栏全透明(含虚拟按键适配)
  8. 11、软件工程基知识
  9. ppt2019版添加上下标
  10. Python+Keras实现手写数字识别