各位小伙伴,接口測(cè)試中我們會(huì)使用到各種各樣的數(shù)據(jù),特別是在編寫接口自動(dòng)化測(cè)試代碼時(shí),我們不可能在代碼中寫”死”數(shù)據(jù),我們需要把數(shù)據(jù)和代碼分離,便于我們后期維護(hù)代碼和數(shù)據(jù)。 數(shù)據(jù)儲(chǔ)存的形式多種多樣,我們可以儲(chǔ)存到txt格式的文檔里,也可以儲(chǔ)存到csv格式的文件里,前面兩種都是數(shù)據(jù)量比較小的時(shí)候我們可以臨時(shí)使用一下,但數(shù)據(jù)量多的時(shí)候我們都是儲(chǔ)存到數(shù)據(jù)庫(kù)中的。Mysql是我們最常用到的關(guān)系型數(shù)據(jù)庫(kù),接下來(lái)我們來(lái)學(xué)習(xí)一下,怎么使用python獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù),然后使用到接口測(cè)試中。
閱讀這篇文章你需要python,mysql,接口測(cè)試,軟件測(cè)試,自動(dòng)化測(cè)試等知識(shí)
首先數(shù)據(jù)是儲(chǔ)存在mysql數(shù)據(jù)庫(kù)中的,如用戶登錄的用戶名和密碼,我們需要獲取用戶名和密碼作為登錄接口的參數(shù),如下圖:
下面是我們的自動(dòng)化接口測(cè)試代碼,接口測(cè)試中使用了requests和unittest測(cè)試框架。如標(biāo)注的地方,需要我們從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)來(lái)替換 Import unittest#這種引入模塊的方式,使用模塊里的變量或函數(shù)時(shí),要用模塊名.函數(shù)來(lái)使用函數(shù) Import requests
Class Myclass(unittest.TestCase): #為用例初始化 Def setUp(self): pass
Def test_longin(self): #這里的用戶名和密碼需要從數(shù)據(jù)庫(kù)中獲取 data={"name":'maker','passwd':'123456'} res=requests.post('http://127.0.0.1:8808/api/block/login',params=data) print(res.text) mystr2=res.text mystr='''{ "code":"200", "msg":"成功", "data":"bbb" }''' self.assertEqual(mystr,mystr2,"預(yù)期結(jié)果和實(shí)際結(jié)果不符")
if__name__=='__main__': unittest.main()
接下來(lái)我們看一下怎么使用python從mysql數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),具體的步驟如: 1. 引入pymysql 2. 連接數(shù)據(jù)庫(kù) 3. 創(chuàng)建游標(biāo)對(duì)象 4. 查看一下所在數(shù)據(jù)庫(kù)(如果不在,需要切換數(shù)據(jù)庫(kù)) 5. 獲取數(shù)據(jù) 6. 關(guān)閉數(shù)據(jù)庫(kù) 上面需要注意的是,必須先下載pymysql模塊 代碼如下: #1.引入pymysql import pymysql #2.連接數(shù)據(jù)庫(kù) mydb=pymysql.connect(host='localhost',port=3306,user='root', passwd='123456',db='qftestdb',charset='utf8') #3..創(chuàng)建游標(biāo)對(duì)象 cur=mydb.cursor()
#4.查看所在的數(shù)據(jù)庫(kù) cur.execute("select DATABASE()") data=cur.fetchone() print(data)
#5.獲取數(shù)據(jù) str="select *from user" cur.execute(str) data=cur.fetchone() print(data)#這里就是獲取的數(shù)據(jù) #6.關(guān)閉數(shù)據(jù)庫(kù) mydb.close() 現(xiàn)在我們知道怎么使用python從mysql獲取數(shù)據(jù),接下來(lái)我們要把兩份代碼整合到一起,重點(diǎn)在如下圖
你需要的完整代碼如下: import unittest """ 這種引入模塊的方式,使用模塊里的變量或函數(shù)時(shí), 要用模塊名.函數(shù)來(lái)使用函數(shù) """ import requests # 1.引入pymysql import pymysql class Myclass(unittest.TestCase):
def setUp(self): # 2.連接數(shù)據(jù)庫(kù) mydb = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='qftestdb', charset='utf8') # 3..創(chuàng)建游標(biāo)對(duì)象 cur = mydb.cursor()
# 4.查看所在的數(shù)據(jù)庫(kù) cur.execute("select DATABASE()") data = cur.fetchone() print(data)
# 5.獲取數(shù)據(jù) str = "select *from user" cur.execute(str) data = cur.fetchone() #需要把data中的數(shù)據(jù)給到test_login函數(shù)中 self.user=data[0] self.password=data[1] # 6.關(guān)閉數(shù)據(jù)庫(kù) mydb.close()
def test_longin(self): data = {"name":self.user, 'passwd':self.password} res = requests.post('http://127.0.0.1:8808/api/block /login',params=data) print(res.text) mystr2 = res.text mystr = '''{ "code": "200", "msg": "成功", "data": "bbb" }''' self.assertEqual(mystr, mystr2, "預(yù)期結(jié)果和實(shí)際結(jié)果不符")
if __name__=='__main__': unittest.main() 整個(gè)代碼編寫思路是:先使用具體數(shù)據(jù)進(jìn)行接口自動(dòng)化測(cè)試,ok沒(méi)有問(wèn)題后,然后再編寫獲取mysql數(shù)據(jù)庫(kù)中數(shù)據(jù)的代碼,代碼運(yùn)行ok,能獲取到數(shù)據(jù),然后再把兩個(gè)代碼整合到一起,整合中考慮從數(shù)據(jù)庫(kù)獲取的數(shù)據(jù)怎么給到接口測(cè)試代碼中。這里我們使用了對(duì)象屬性的方式。
|
|
來(lái)自: 六芒ct > 《我的專業(yè)》