Python介面測試之對MySQL/unittest架構/Requests 的操作

來源:互聯網
上載者:User

標籤:建立   案例   and   port   set   代碼   tool   NPU   count   

單元測試支援測試自動化、 共用的安裝程式和關閉代碼測試、 

彙總成集合,測試和報告架構從測試的獨立性。單元測試模組提供可以很容易地支援這些素質的一組測試的類。關於unittest

測試架構建議可以到官方查看詳細的說明以及示範的執行個體。unittest各個模組的關係為:

#!/usr/bin/env python#coding:utf-8import  unittestclass TestDiv(unittest.TestCase):    def setUp(self):        pass    def tearDown(self):        pass    def test_001(self):        self.assertEqual(div(1,1),1)    def test_002(self):        self.assertRaises(ZeroDivisionError,div,1,0)if __name__==‘__main__‘:    unittest.main(verbosity=2)

最常使用的分別有GET,PUT,DELETE,POST,通過request庫也是可以實現

的,見如下的代碼:

在python的命令列環境下

看是否可以匯入MySQLdb,如果可以匯入並且無任何的錯誤提示,表示已經安裝成功了,見:

       已經很成功的安裝了python操作mysql的資料庫,在這裡,我們詳細的介紹對python對mysql的增加,刪除,修改

和查詢的基本操作,這裡使用的資料庫名稱是“day2017”,我們對資料庫的操作,首先是建立資料庫,然後是在資料庫中

建立表,在這裡,表的名稱為:userInfo,見建立好的表欄位資訊:

OK,建立好資料庫以及建立好了資料庫中的表以後,下來開始操作資料庫,操作資料庫的第一步當然是串連資料庫,然後是

建立遊標,接下來是對資料庫的各種操作,這裡我們先來操作Insert資料的操作,見實現的代碼:

#!/usr/bin/env python #coding:utf-8import MySQLdbdef insert_One():    ‘‘‘插入一條資料‘‘‘    try:        conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)    except:        print u‘串連mysql資料庫失敗‘    else:        cur = conn.cursor()        sql = ‘INSERT INTO userInfo VALUES (%s,%s,%s,%s)‘        params = (1, ‘admin‘, ‘admin‘, ‘[email protected]‘,)        cur.execute(sql, params)        conn.commit()    finally:        cur.close()        conn.close()if __name__==‘__main__‘:    insert_One()

查看資料庫,可以看到,資料已經插入到資料庫中,見查詢的結果:

在上面的案例中,只是插入了單條資料,實際上,某些時候,會插入多條資料,也就是批量插入,批量插入實現的代碼為:

def insert_Many():    ‘‘‘批量插入資料‘‘‘    try:        conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)    except:        print u‘串連mysql資料庫失敗‘    else:        cur = conn.cursor()        sql = ‘INSERT INTO userInfo VALUES (%s,%s,%s,%s)‘        params = [            (2,‘wuya‘,‘admin‘,‘[email protected]‘),            (3,‘weke‘,‘admin‘,‘[email protected]‘)        ]        cur.executemany(sql, params)        conn.commit()    finally:        cur.close()        conn.close()if __name__==‘__main__‘:    insert_Many()

接下來,我們來查看資料庫的查詢,資料查詢分為二種,一種是查詢的結果是一條語句,使用的是fetchone()方法,另外一種是查詢的資料

結果是多條,使用的方法是fetchmany(),我們分別來看這二個方法的使用,我們先來看單條資料的查詢,見實現的代碼:

import  MySQLdbdef select_one():    ‘‘‘單條資料的查詢‘‘‘    try:        conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)    except:        print u‘串連mysql資料庫失敗‘    else:        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        sql = ‘select * from userInfo where id=%s‘        params = (1,)        data=cur.execute(sql, params)        print cur.fetchone()        conn.commit()    finally:        cur.close()        conn.close()if __name__==‘__main__‘:    select_one()

多條資料的查詢,見實現的代碼:

import MySQLdbdef select_Many():    ‘‘‘多條資料的查詢‘‘‘    try:        conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)    except:        print u‘串連mysql資料庫失敗‘    else:        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        sql = ‘select * from userInfo‘        ret=cur.execute(sql)        data=cur.fetchall()        for item in data:            print item    finally:        cur.close()        conn.close()if __name__==‘__main__‘:    select_Many()

下面我們來看更新語句的測試,見實現的代碼:

import  MySQLdbdef update_Test():    ‘‘‘更新語句測試‘‘‘    try:        conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)    except:        print u‘串連mysql資料庫失敗‘    else:        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        sql = ‘update userInfo set username=%s where id=%s‘        params=(‘system‘,1,)        ret=cur.execute(sql,params)        conn.commit()    finally:        cur.close()        conn.close()if __name__==‘__main__‘:    update_Test()

 

最後一步,也就是刪除資料了,直接看如下的實現代碼:

import  MySQLdbdef delete_Test():    ‘‘‘刪除語句測試‘‘‘    try:        conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)    except:        print u‘串連mysql資料庫失敗‘    else:        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        sql = ‘delete from userInfo where id=%s‘        params=(3,)        ret=cur.execute(sql,params)        conn.commit()    finally:        cur.close()        conn.close()if __name__==‘__main__‘:    delete_Test()

      事實上,對於如上操作資料庫的方式,有很多的代碼是可以重夠的,比如串連資料庫的方式,另外,我們可以把操作資料庫的

方式寫在一個類裡面,在業務調用的時候直接調用我們的資料庫方法進行操作,見下面操作mysql資料庫的方法,見源碼:

#!/usr/bin/env python #coding:utf-8import  MySQLdbclass MySQLHelper(object):    def __init__(self):        pass    def get_one(self,sql,params):        conn = MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        retCount = cur.execute(sql,params)        data = cur.fetchone()        cur.close()        conn.close()        return data    def get_many(self,sql,params):        conn = MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘server‘,db=‘day2017‘)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        retCount = cur.execute(sql,params)        data = cur.fetchall()        cur.close()        conn.close()        return data    def insert_one(self,sql,params):        conn = MySQLdb.connect(host=‘127.0.0.1‘, user=‘root‘, passwd=‘server‘, db=‘day2017‘)        cur = conn.cursor()        cur.execute(sql, params)        conn.commit()        cur.close()        return u‘插入資料庫成功‘    def insert_many(self,sql,params):        conn = MySQLdb.connect(host=‘127.0.0.1‘, user=‘root‘, passwd=‘server‘, db=‘day2017‘)        cur = conn.cursor()        cur.executemany(sql, params)        conn.commit()        cur.close()        return u‘批量插入資料庫成功‘    def update_one(self,sql,params):        conn = MySQLdb.connect(host=‘127.0.0.1‘, user=‘root‘, passwd=‘server‘, db=‘day2017‘)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        ret = cur.execute(sql, params)        conn.commit()        cur.close()        conn.close()        return u‘更新資料庫成功‘    def delete_one(self,sql,params):        conn = MySQLdb.connect(host=‘127.0.0.1‘, user=‘root‘, passwd=‘server‘, db=‘day2017‘)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        ret = cur.execute(sql, params)        conn.commit()        cur.close()        conn.close()        return u‘刪除資料庫成功‘

 

把串連資料庫部分進行重構,放到一個config.py的檔案中,這樣我們串連資料庫的方法就只需要在config.py檔案維護了,而不

需要在如上代碼中每個都得看的修改,這實在是很糟糕,見重構後的config.py檔案源碼:

#!/usr/bin/env python #coding:utf-8conn_dict=dict(host=‘127.0.0.1‘, user=‘root‘, passwd=‘server‘, db=‘day2017‘)

 

見重構後操作mysql的資料庫方法,見源碼:

#!/usr/bin/env python #coding:utf-8import  MySQLdbimport  configclass MySQLHelper(object):    def __init__(self):        self.conn=config.conn_dict    def get_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        retCount = cur.execute(sql,params)        data = cur.fetchone()        cur.close()        conn.close()        return data    def get_many(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        retCount = cur.execute(sql,params)        data = cur.fetchall()        cur.close()        conn.close()        return data    def insert_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor()        cur.execute(sql, params)        conn.commit()        cur.close()        return u‘插入資料庫成功‘    def insert_many(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor()        cur.executemany(sql, params)        conn.commit()        cur.close()        return u‘批量插入資料庫成功‘    def update_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        ret = cur.execute(sql, params)        conn.commit()        cur.close()        conn.close()        return u‘更新資料庫成功‘    def delete_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        ret = cur.execute(sql, params)        conn.commit()        cur.close()        conn.close()        return u‘刪除資料庫成功‘

 

寫資料庫的操作方法,是為了進行對業務的操作,要不僅僅寫這些沒什麼實際的意義,如我們實現輸入使用者名稱和密碼,在

在資料庫中驗證,如果使用者名稱和密碼都是admin,那麼通過,如果有其中一個不是admin,就提示使用者,請提示使用者使用者名稱

或者密碼錯誤,下面來實現這樣的一個過程,見實現的源碼:

#!/usr/bin/env python #coding:utf-8import  MySQLdbimport  configclass MySQLHelper(object):    def __init__(self):        self.conn=config.conn_dict    def get_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        retCount = cur.execute(sql,params)        data = cur.fetchone()        cur.close()        conn.close()        return data    def get_many(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        retCount = cur.execute(sql,params)        data = cur.fetchall()        cur.close()        conn.close()        return data    def insert_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor()        cur.execute(sql, params)        conn.commit()        cur.close()        return u‘插入資料庫成功‘    def insert_many(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor()        cur.executemany(sql, params)        conn.commit()        cur.close()        return u‘批量插入資料庫成功‘    def update_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        ret = cur.execute(sql, params)        conn.commit()        cur.close()        conn.close()        return u‘更新資料庫成功‘    def delete_one(self,sql,params):        conn = MySQLdb.connect(**self.conn)        cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)        ret = cur.execute(sql, params)        conn.commit()        cur.close()        conn.close()        return u‘刪除資料庫成功‘class CheckUserInfo(object):    def __init__(self):        self.__helper=MySQLHelper()    def checkValid(self,username,password):        sql=‘select * from userInfo where  username=%s and password=%s‘        params=(username,password)        return self.__helper.get_one(sql,params)def info():    username=raw_input(u‘請輸入你的使用者名稱:\n‘)    password=raw_input(u‘請輸入你的密碼:\n‘)    userInfo=CheckUserInfo()    result=userInfo.checkValid(username,password)    if not result:        print u‘使用者名稱或者密碼錯誤,請聯絡管理員‘    else:        print u‘恭喜您,輸入正確!‘if __name__==‘__main__‘:    info()

Python介面測試之對MySQL/unittest架構/Requests 的操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.