一、常见的断言:
1、assertequal
2、assertnotequal
3、assertFalse
4、assertTrue
5、assertNone
6、assertnotNone
#------获取文本值
txt=dr.find_element_by_xpath('//*[@id="u1"]/a[1]').text
if not (txt==u'新闻'):
print '{}'.format(txt)
#-------使用assert False进行断言,当触发了assert False时,assert False后面的代码将不会被执行
assert False
#------获取value值
val=dr.find_element_by_id('su').get_attribute('value')
#------使用assert False进行断言
if not (val==u'百度一下'):
print '%s'%val
assert False
dr.find_element_by_id('kw').send_keys(u'多测师')
4、unittest框架结构
unittest 是python自带的一个框架 / 模块
使用unittest框架执行用例的优点:1)提供用例组织方法和用例执行的方法
2)提供丰富的日志和清晰的用例执行后的测试报告
unittest 中包括(用的较多的):TestCase类
TestSuite类
TextTestRunner类
使用unittest框架执行用例时,对我们用例命名有一定的要求,因为我们的测试类都是以test开头,那么我们的测试用例同样要以test打头进行命名
注:‘wb’:只写打开或新建一个二进制文件;只允许写数据。
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
注意:在测试完成后,无报错,但不生成html测试报告或者生成的文件为空时,可以新建一个python文件,将用例导入新建的python文件,重新执行一遍
①、结构:
#--- unittest框架结构
#---- 首先创建测试类,且要继承TestCase类
from selenium import webdriver
from time import sleep
import unittest #-------导入库
dr=webdriver.Chrome()
dr.get('http://www.baidu.com')
dr.maximize_window()
sleep(2)
class foo(unittest.TestCase):
#--- 初始化环境
#--- setUp(注意大小写)是用于设置用例初始化部分,在测试用例执行前,这个方法中的函数(脚本)将先会执行如:对浏览器操作、连接数据库等
def setUp(self):
pass
#--- 所有执行的测试用例一个或者多个
def test_login(self):
pass
def test_zc(self):
pass
#--- 还原测试环境(每执行一个用例都会执行该方法,保证下一个用例执行的环境)
#--- tesrDown(注意大小写)该方法是在用例执行后调用,主要用来还原环境,如:退出浏览器、关闭数据库等
def tearDown(self):
self.dr.quit()
②、eg:用例集、测试报告
#----假设在百度中完成对多测师、达内、北大青鸟的查找
#----要构造测试用例集
#coding:utf-8
from selenium import webdriver
from time import sleep
import unittest #---------导入库
import HTMLTestRunnerCN #-------报告模块
class foo(unittest.TestCase):
#---初始化环境
#---setUp(注意大小写)是用于设置用例初始化部分,在测试用例执行前,这个方法中的函数(脚本)将先会执行如:对浏览器操作、连接数据库等
def setUp(self):
self.dr = webdriver.Chrome()
self.dr.get('http://www.baidu.com')
self.dr.maximize_window()
sleep(2)
#-----所有执行的测试用例一个或者多个
def test_login(self):
driver=self.dr
driver.find_element_by_id('kw').send_keys(u'多测师')
driver.find_element_by_id('su').click()
sleep(5)
def test_dn(self):
driver = self.dr
driver.find_element_by_id('kw').send_keys(u'达内')
driver.find_element_by_id('su').click()
sleep(5)
def test_bdqn(self):
driver = self.dr
driver.find_element_by_id('kw').send_keys(u'北大青鸟')
driver.find_element_by_id('su').click()
sleep(5)
# ----- 还原测试环境(每执行一个用例都会执行该方法,保证下一个用例执行的环境)
#-------tesrDown(注意大小写)该方法是在用例执行后调用,主要用来还原环境,如:退出浏览器、关闭数据库等
def tearDown(self):
self.dr.quit()
def suit():
suite = unittest.TestSuite()
# suite.addTest(foo('test_login'))
# suite.addTest(foo('test_dn'))
# suite.addTest(foo('test_bdqn'))
suite.addTests([foo('test_login'),foo('test_dn'),foo('test_bdqn')])
return suite
#------执行测试用例
if __name__=='__main__':
yy=suit()
ht='d://YANG.HTML' #--------指定报告路径
fp=file(ht,'wb') # ---- 'wb'表示只写打开或新建二进制文件:值允许写数据
run=HTMLTestRunnerCN.HTMLTestRunner(stream=fp,
title=u'百度搜索报告',
description=u'用例执行情况',
)
run.run(yy)
二、python操作数据库测试
1、需要导入mysqldb的库
2、cursor():① 我们连接数据库获取一个cursor()游标(对象),我们可以通过该对象提供的方法来完成我们的操作
② 方法包括两大类:1、执行sql语句 2、接收sql执行后的返回值
3、什么是游标?
游标:SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针,游标的一个常见用途就是保存查询结果,以便以后使用(游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果)
fetchone():该方法是返回单个的元组,也就是一条记录,没有结果则返回None
fetchone():该方法是返回多个的元组,也就是一条记录,没有结果则返回None
fetmany(3):该方法是返回指定行的数据记录,也就是一条记录,没有结果则返回None
这里的'3'表示数据库中的前3行记录
execute():该方法用来执行sql语句
①、eg:
import MySQLdb
#----- 连接数据库
db=MySQLdb.connect('192.168.0.71','root','123456','yangjun',charset='utf8')
#------ 获取一个cursor()对象
cs=db.cursor()
#------ 执行sql语句
cs.execute('select * from yy')
#------ 提取执行语句后的结果
#qq=cs.fetchone() #单值打印
qq=cs.fetchall() #------多值,返回元组
# print '%s'%qq #-------会报错,原因是qq(元组)是多值组合,不能这样用
# print '{}'.format(qq)
#-------for循环完成对表格插入多条数据
# for i in range(5):
# sq='''insert into yy(score) VALUE (88)'''
# cs.execute(sq)
#---- for遍历打印返回的元组qq
for i in qq:
print '{}'.format(i)
db.close() #-----关闭数据库
|
|