zoukankan      html  css  js  c++  java
  • python 接口自动化测试--代码实现(七)

    数据库还原脚本:

    #! /usr/bin/python
    # coding:utf-8
    import time
    from Engine.SqlEngine import MSSQL
    COUNT=1
    def restoreRelease():
        global COUNT
        checkConSql = "select spid from sysprocesses where dbid in (select dbid from sysdatabases where name='SOATest')"
        restoreSql = "RESTORE DATABASE SOATest FROM DATABASE_SNAPSHOT = 'SOATest_ss'"
        dbc=MSSQL('192.168.1.2','yht','yht','Master')
        conNum = dbc.ExecQuery(checkConSql)
        if COUNT < 5:
            if len(conNum) == 0:
                print(u'%d条连接数,可以还原数据库,还原中...'%len(conNum))
                dbc.ExecNonQuery(restoreSql)
                print(u'数据库还原完成')
                return True
            else:
                print(u'%d条连接数占用无法还原数据库,5秒后重试'%len(conNum))
                time.sleep(5)
                COUNT=COUNT+1
                restoreRelease()
        else:
            print(u'%d条连接数始终占用,已试过5次依然无法还原数据库'%len(conNum))
            return False
    SqlEngine.py
    #! /usr/bin/python
    # coding:utf-8
    import pymssql
    import sys
    from Engine.DataEngine import decoCatchExcep
    reload(sys)
    sys.setdefaultencoding('utf-8')
    class MSSQL(object):
        """
        对pymssql的简单封装
        pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
        使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启
    
        用法:
    
        """
    
        def __init__(self,host,user,pwd,db):
            self.host = host
            self.user = user
            self.pwd = pwd
            self.db = db
    
        def __GetConnect(self):
            """
            得到连接信息
            返回: conn.cursor()
            """
            if not self.db:
                raise(NameError,"没有设置数据库信息")
            self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
            cur = self.conn.cursor()
            if not cur:
                raise(NameError,"连接数据库失败")
            else:
                return cur
        @decoCatchExcep
        def ExecQuery(self,sql):
    
            cur = self.__GetConnect()
            cur.execute(sql)
            resList = cur.fetchall()
            self.conn.close()
            return resList
        @decoCatchExcep
        def ExecNonQuery(self,sql):
            cur = self.__GetConnect()
            self.conn.autocommit(True)
            cur.execute(sql)
            self.conn.autocommit(False)
            self.conn.commit()
            self.conn.close()

    装饰器decoCatchExcep:

    def decoCatchExcep(func):
        def _decoCatchExcep(*args, **kwargs):
            try:
                ret = func(*args, **kwargs)
                return ret
            except Exception,e:
                print(func.__name__+' : '+str(e).encode('gb18030'))
                LogPro.writeException(str(e).encode('gb18030'))
        return _decoCatchExcep
     
  • 相关阅读:
    A. Playing with Paper
    手摇算法
    perl之创建临时文件夹遇到同名文件该咋办
    B. Two Buttons
    A Pangram
    shell的面试题
    A. Game
    B. Drazil and His Happy Friends
    A. Drazil and Date
    2道阶乘的算法题
  • 原文地址:https://www.cnblogs.com/hito/p/5680352.html
Copyright © 2011-2022 走看看