找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
一、常见的断言:
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()     #-----关闭数据库

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册