找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

python加selenium自动化框架

[复制链接]
                  多测试用例执行实例                             
from selenium import webdriver
from time import sleep
import unittest#导入对应的unittest框架或者模块
#unittest框架结构
#首先创建测试类:该类且要基础testcase类
class foo(unittest.TestCase):
    def setUp(self):#setUp 初始化测试环境---setUp是用于用例初始化部分,在测试用例执行前,
        # 在这个方法中的函数(脚本)将会先执行:如对浏览器操作。连接数据库等
        self.dr=webdriver.Chrome()
        self.dr.get('http:/www.baidu.com')
        self.dr.maximize_window()
        sleep(4)
      #所有执行的测试用例:一个或者多个

    def test_dcs(self):
        driver = self.dr
        driver.find_element_by_id('kw').send_keys(u'多测师')
        driver.find_element_by_id('su').click()
        sleep(6)

    def test_dn(self):
        driver = self.dr
        driver.find_element_by_id('kw').send_keys(u'达内')
        driver.find_element_by_id('su').click()
        sleep(3)
    def test_bdqn(self):
        driver = self.dr
        driver.find_element_by_id('kw').send_keys(u'北大青鸟')
        driver.find_element_by_id('su').click()
        sleep(3)

        #tearDown:还原测试环境(没执行一个用例都会执行该方法,保证下一个用例执行的环境)

    #tearDown该方法是在用例执行后调用:用来还原环境 如;关闭浏览器:退出数据库

    def tearDown(self):
        self.dr.quit()

    #执行测试用例
if __name__=='__main__':
  #用例集:即假设在百度中完成对多测师,达内,北大青鸟等机构的搜索
    #构造测试用例集:可以理解成构造一个容器名字为suite后续将用例放在容器里面执行
    suite=unittest.TestSuite()
    suite.addTest(foo('test_dcs'))
    suite.addTest(foo('test_dn'))
    suite.addTest(foo('test_bdqn'))
uite.addTests([foo('test_dcs'),foo('test_dn'),foo('test_bdqn')])

    #执行测试用例
    t=unittest.TextTestRunner()
    t.run(suite)
                           wb注释                             
‘wb’:只写打开或新建一个二进制文件;只允许写数据。
       wb 只写打开或新建一个二进制文件;只允许写数据。
       wb+ 读写打开或建立一个二进制文件,允许读和写。
       ab+ 读写打开一个二进制文件,允许读或在文件末追加数据  


                         测试报告实例                                      
from selenium import webdriver
from time import sleep
import unittest#
import HTMLTestRunnerCN导入测试报告
class foo(unittest.TestCase):
    def setUp(self):
        self.dr=webdriver.Chrome()
        self.dr.get('http:/www.baidu.com')
        self.dr.maximize_window()
        sleep(4)
    def test_dcs(self):
        driver = self.dr
        driver.find_element_by_id('kw').send_keys(u'多测师')
        driver.find_element_by_id('su').click()
        sleep(6)

    def test_dn(self):
        driver = self.dr
        driver.find_element_by_id('kw').send_keys(u'达内')
        driver.find_element_by_id('su').click()
        sleep(3)
    def test_bdqn(self):
        driver = self.dr
        driver.find_element_by_id('kw').send_keys(u'北大青鸟')
        driver.find_element_by_id('su').click()
        sleep(3)
    def tearDown(self):
        self.dr.quit()

def suit():
    suite = unittest.TestSuite()
    suite.addTests([foo('test_dcs'), foo('test_dn'), foo('test_bdqn')])
    return suite


if __name__=='__main__':
    yy=suit()
    html='c://SUZE.HTML'#指定报告路径
    fp=file(html,'wb')#表示新建或者打开一个二进制的文件只允许写数据
    run=HTMLTestRunnerCN.HTMLTestRunner(stream=fp,title=u'百度搜索报告',description=u'用例执行情况')
    run.run(yy)

                              新开截图                     
第一步

C:/Users/Administrator/AppData/Local/YNote/data/qqF2624168B8924881AEBC98310BC05DB3/463d91c4c340426a8b5eea80ea8504c1/clipboard.png
第二步
C:/Users/Administrator/AppData/Local/YNote/data/qqF2624168B8924881AEBC98310BC05DB3/ecd9330f2a2741388cb5d13293ba39a2/clipboard.png
第三步
C:/Users/Administrator/AppData/Local/YNote/data/qqF2624168B8924881AEBC98310BC05DB3/af7372a9f0d04f62b5f54b95a3c94f6e/clipboard.png

                                       python操作数据库                                          
需要导入mysqldb的模块的库

cursor()我们连接数据库获取一个cursor游标(对象)我们可以通过该对象提供的方法
来完成我们的操作
方法包括两大类
  1,执行sql语句
  2,接受sql执行后的返回值

什么是游标?
游标:SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针,游标的一个常见用途就是保存查询结果,以便以后使用(游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果)


fetchone()该方法是返回单个的元祖,也就是一条记录,没有结果则返回None
fetchall()该方法是返回多个的元祖,也就是一条记录,没有结果则返回None
fetchmany(3)该方法是返回制定行数的,也就是一条记录,没有结果则返回None
                        这里的3则表示三行记录

execute():该方法用来执行sql语句       



                                          Python操作数据库                                          
#coding:utf-8
import MySQLdb
db=MySQLdb.connect('192.168.81.129','root','123456','dcs32',charset='utf8')#链接数据库charset=处理中文问题
cursor=db.cursor()
#执行sql语句
cursor.execute("select name from dcs1 where id=2 ")
#提取执行后的结果
yy=cursor.fetchone()
print '%s'%yy
db.close()#关闭数据

                            数据库for循环                           

C:/Users/Administrator/AppData/Local/YNote/data/qqF2624168B8924881AEBC98310BC05DB3/30212bb720eb4ce895a894ab480feddb/%60_et0%7E2gd%60n%60bf%28yyxjg6%5De.png

                                                     数据库通过for循环增加数据                                                     

通过Python查看数据库内容
#coding:utf-8
import MySQLdb
db=MySQLdb.connect('192.168.81.129','root','123456','dcs32',charset='utf8')#链接数据库charset=处理中文问题
cursor=db.cursor()
#执行sql语句
cursor.execute("select name from dcs1 where id=2 ")
#提取执行后的结果
yy=cursor.fetchone()
print '%s'%yy
db.close()#关闭数据
通过pyhon对数据库操作之插入数据
2如何插入数据:用for循环
import MySQLdb
db=MySQLdb.connect("192.168.0.91","cqm","123456","dcs32",charset="utf8")
cursor=db.cursor()
for i in range(10):
    sq='insert into fdcs32 (name,age,sex,class) values("x","1","1","1")'
    cursor.execute(sq)
db.close()
3、插入不同的数据:用;隔开
import MySQLdb
db=MySQLdb.connect("192.168.0.91","cqm","123456","dcs32",charset="utf8")
cursor=db.cursor()
sq='insert into fdcs32 (name,age,sex,class) values("x","1","1","1");insert into fdcs32 (name,age,sex,class) values("xiaochen","1","1","1")'
cursor.execute(sq)
db.close()

写一个类包括数据库增删改查用unittest模块该断言的时候断言形成一个报告实例
from selenium import webdriver
from time import sleep
import unittest#导入对应的unittest框架或者模块
import HTMLTestRunnerCN
import MySQLdb
class foo(unittest.TestCase):
    def setUp(self):
        self.db=MySQLdb.connect('192.168.81.129', 'root', '123456', 'dcs32', charset='utf8')
        sleep(2)
    def test_zen(self):数据库之增
        sef.cursor=self.db.cursor()
        self.cursor.execute('insert into ccc(name) VALUES ("mm")')

    def test_shan(self):
        self.cursor=self.db.cursor()
        self.cursor.execute('delete from ccc where s_id=4')
    def test_gai(self):
        self.cursor = self.db.cursor()
        self.cursor.execute('update ccc set name="xiaoxaio" where s_id=13')

    def test_cha(self):
        self.cursor = self.db.cursor()
        self.cursor.execute("select name from ccc where s_id='2' ")
        # yy = self.cursor.fetchone()

    def tearDown(self):
        self.db.close()

def suit():
    suite = unittest.TestSuite()
    suite.addTest(foo("test_zen"))
    suite.addTest(foo("test_shan"))
    suite.addTest(foo("test_gai"))
    suite.addTest(foo("test_cha"))
    return suite


if __name__=='__main__':
    yy=suit()
    html='e://SUZE.HTML'#指定报告路径
    fp=file(html,'wb')#表示新建或者打开一个二进制的文件只允许写数据
    run=HTMLTestRunnerCN.HTMLTestRunner(stream=fp,title=u'用例执行报告',description=u'用例执行情况')

分享至 : QQ空间
收藏

0 个回复

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