亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

python+requests+pytest接口自動化的實(shí)現(xiàn)示例

瀏覽:17日期:2022-06-22 11:20:50
1、發(fā)送get請求

#導(dǎo)包import requests#定義一個(gè)urlurl = 'http://xxxxxxx'#傳遞參數(shù)payload='{'head':{'accessToken':'','lastnotice':0,'msgid':''},'body':{'user_name':'super_admin','password':'b50c34503a97e7d0d44c38f72d2e91ad','role_type':1}}'headers = { ’Content-Type’: ’text/plain’, ’Cookie’: ’akpsysessionid=bafc0ad457d5a99f3a4e53a1d4b32519’}#發(fā)送get請求r = requests.get( url=url,headers=headers, data=payload)#打印結(jié)果print(r.text)#解碼print(r.encoding)print(r.text.encode(’utf-8’).decode(’unicode_escape’))#先把返回的結(jié)果轉(zhuǎn)換成utf-8,再去解碼成中文的編碼2、發(fā)送post請求

#導(dǎo)包import requests#定義一個(gè)urlurl = 'http://xxxxxxx'#傳遞參數(shù)payload='{'head':{'accessToken':'','lastnotice':0,'msgid':''},'body':{'user_name':'super_admin','password':'b50c34503a97e7d0d44c38f72d2e91ad','role_type':1}}'headers = { ’Content-Type’: ’text/plain’, ’Cookie’: ’akpsysessionid=bafc0ad457d5a99f3a4e53a1d4b32519’}#發(fā)送post請求r = requests.post( url=url,headers=headers, data=payload)#打印結(jié)果print(r.text)3、發(fā)送https請求

import requestsurl=’https://www.ctrip.com/’#第一種解決方案,發(fā)送請求的時(shí)候忽略證書,證書的參數(shù)verify用的比較多r=requests.post(url=url,verify=False)#verify參數(shù)默認(rèn)為True,值為False,表示忽略證書#第二張解決方案,verify里面添加證書的路徑r=requests.post(url=url,verify=’證書的路徑’)#verify參數(shù)默認(rèn)為True,值為False,表示忽略證書print(r.text)4、文件上傳

import requestsfile = { ’filename’:open(’文件名稱’,’rb’)}response = requests.post('網(wǎng)址',file)print(response.text)5、文件下載

#小文件下載import requestsr = requests.get('https://img.sitven.cn/Tencent_blog_detail.jpg')with open(r'D:a.jpg', 'wb') as f: f.write(r.content)#大文件下載import requestsdef test_downloads(url, file): s = requests.session() r = s.get(url, stream=True, verify=False) with open(file, 'wb') as f:for chunk in r.iter_content(chunk_size=512): f.write(chunk) if __name__ == '__main__': url = 'https://www.url.com/test/export' file = 'D:a.xlsx' test_downloads(url=url, file=file)6、timeout超時(shí)

#導(dǎo)包import requests#循環(huán)10次for i in range(0,10): try:url='http://xxxxxxxxxxxxxxxx'data={ 'head':{'lastnotice':0,'msgid':'','accessToken':'89a08bff-15d7-4d7a-9967-0b5f4fb699ce'}, 'body':{'clinicid':'978f661e-1782-43bd-8675-b0ff1138ab7c','deptid':'09b8515b-b01b-4771-9356-aed6b5aa01bf','doctorid':'65ac0251-10ff-473a-af8a-20e8969176f7','registtype':0,'card_num':'','bcc334':'','patientopt':1,'bkc368':'1','patient':{'cardid':'','medicalcardid':'','label':'','sourcetype':1,'nationid':'01','maritalstatus':0,'address':'','company':'','jobname':'','email':'','remark':'','bcc334':'','name':'11','gender':1,'phone':'','birthdate':'2020-03-23','patienttype':1,'szsbcardid':''}}}#發(fā)送post請求,超時(shí)時(shí)間0.03sr=requests.post(url=url,json=data,timeout=0.03)print(r.text)print(r.cookies) except:print(’error’)7、鑒權(quán)7.1、auth參數(shù)鑒權(quán)

import requestsurl = ’http://192.168.1.1’headers = {} # 有的不帶頭也能請求到 不帶頭可以忽略這行 和headers=headers,這兩處r = requests.get(url, auth=(’admin’, ’123456’), headers=headers, timeout=10)print(r.text)7.2、session操作

#實(shí)例化sessionsession = requests.session()#使用session發(fā)起請求response = session.post(url,headers=req_header,data=form_data)7.3、token操作

import requestsurl='http://xxxxxxxxxxxxxxx'json={ 'head':{'accessToken':'','lastnotice':0,'msgid':''}, 'body':{'username':'15623720880','password':'48028d2558577c526a017883211b4066','forceLogin':0}}r=requests.post(url=url,json=json)print(r.text)print(r.cookies)#登錄成功后返回token,帶入下一個(gè)接口for i in range(0,1): try:url='xxxxxxxxxxxxxxxxxx'data={ 'head':{'lastnotice':0,'msgid':'','accessToken':'89a08bff-15d7-4d7a-9967-0b5f4fb699ce'}, 'body':{'clinicid':'978f661e-1782-43bd-8675-b0ff1138ab7c','deptid':'09b8515b-b01b-4771-9356-aed6b5aa01bf','doctorid':'65ac0251-10ff-473a-af8a-20e8969176f7','registtype':0,'card_num':'','bcc334':'','patientopt':1,'bkc368':'1','patient':{'cardid':'','medicalcardid':'','label':'','sourcetype':1,'nationid':'01','maritalstatus':0,'address':'','company':'','jobname':'','email':'','remark':'','bcc334':'','name':'11','gender':1,'phone':'','birthdate':'2020-03-23','patienttype':1,'szsbcardid':''}}}r=requests.post(url=url,json=data,timeout=0.09)print(r.text)print(r.cookies) except:print(’error’)7.4、sign簽名

# appid: wxd930ea5d5a258f4f# mch_id: 10000100# device_info: 1000# body: test# nonce_str: ibuaiVcKdpRxkhJAimport hashlib#需要加密的字符串stringA='appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA';#構(gòu)建一個(gè)對象為mdmd=hashlib.md5()#對stringA字符串進(jìn)行編碼md.update(stringA.encode()) #生成后的加密值A(chǔ)ES=md.hexdigest()#把加密的結(jié)果,小寫轉(zhuǎn)大寫 upper函數(shù)AES=AES.upper()print(AES)

參考微信支付:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

8、自動化模塊劃分 config 配置文件(python package)#directory和python package大同小異 common 公共的方法(python package) testdata 測試數(shù)據(jù)(python package) test_case測試用例(python package) report 報(bào)告(directory) run_case 測試執(zhí)行(python package) log 日志

python+requests+pytest接口自動化的實(shí)現(xiàn)示例

8.1、config配置文件

def server_ip(): ’’’ ait_ip=’’開發(fā)環(huán)境的服務(wù)器ip sit_ip=’’測試環(huán)境的服務(wù)器ip :return: 返回不同服務(wù)器的地址 ’’’ server_add={’dev_ip’ : ’http://his.xxxxxxxxxxx.com’,’sit_ip’ : ’http://his.xxxxxxxxxxxx.comm’ } return server_add[’dev_ip’]------------------------------------------------------------------------------------def sql_conf(): ’’’ host數(shù)據(jù)庫ip user數(shù)據(jù)庫用戶名 password數(shù)據(jù)庫密碼 database:連接數(shù)據(jù)庫名 port數(shù)據(jù)庫端口 chrset數(shù)據(jù)庫字符集 中文utf-8 :return: ’’’ host=’localhost’ user=’root’ password=’123456’ database=’mysql’ port=3306 charset=’utf8’ #這用utf8,utf-8會報(bào)錯(cuò) return host,user,password,database,port,charset8.2、common 公共的方法

# 封裝一個(gè)讀取Excel表格數(shù)據(jù)的函數(shù)# 對Excel表格數(shù)據(jù)的讀取需要用到一個(gè)庫——xlrd庫import xlrddef get_excel_value(i): ’’’ 讀取表中一行的數(shù)據(jù) :return:返回2,3行數(shù)據(jù) ’’’ filename = r'../testdata/jiekou.xls' #文件要用相對路徑 book = xlrd.open_workbook(filename) # 打開一個(gè)工作薄,不需要手動進(jìn)行關(guān)閉 # sheet = book.sheet_by_name('Sheet1') 根據(jù)工作表的名字,獲取一個(gè)工作表對象 sheet = book.sheet_by_index(0) # 獲取一個(gè)工作表,以index的方式,這里是獲取第1個(gè)工作表 return sheet.cell_value(i,1),sheet.cell_value(i,2)# print(sheet.nrows) #打印所有行# print(sheet.ncols) #打印所有列# print(sheet.row_values(0)) #打印第一行# print(sheet.col_values(0)) #打印第一列# print(sheet.cell_value(0,1)) #打印第一行,第二列# for i in range(1, sheet.nrows): # print(sheet.cell_value(i,1),sheet.cell_value(i,2))# 打印單元格[所有數(shù)據(jù)]的值 # str=’(sheet.cell_value(i,1),sheet.cell_value(i,2)))’ # print(str)# for i in range(1, sheet.nrows):# # for j in range(0, sheet.ncols):# print(sheet.cell_value(i,j)) # 打印單元格[i,j]的值---------------------------------------------------------------------------------------------import pymysqlfrom config.sql_conf import *def get_sql(sql): ’’’ :param sql:運(yùn)行查詢的sql語句 :return:數(shù)據(jù)庫查詢結(jié)果 ’’’ #建立一個(gè)連接對象 host, user, password, database, port, charset=sql_conf() db=pymysql.connect(host=host,user=user,password=password,database=database,port=port,charset=charset) #建立一個(gè)游標(biāo) cursor=db.cursor() #執(zhí)行sql語句 cursor.execute(sql) #把sql運(yùn)行的數(shù)據(jù)保存在data變量里面 data=cursor.fetchall() #獲取查詢出的所有的值 cursor.close() #關(guān)閉游標(biāo) db.close() #關(guān)閉數(shù)據(jù)庫連接 return data# print(get_sql('SELECT help_topic_id FROM help_topic WHERE Name=’MOD’')) #執(zhí)行sql語句# print(type(get_sql('SELECT help_topic_id FROM help_topic WHERE Name=’MOD’')))8.3、testdata 測試數(shù)據(jù)

主要存放xls,txt,csv測試數(shù)據(jù)

python+requests+pytest接口自動化的實(shí)現(xiàn)示例

8.4、test_case測試用例

from common.get_mysql import get_sqlfrom config.cof import server_ipfrom common.get_excel import *from config.sql_conf import *import requests# user_id=get_sql('SELECT help_topic_id FROM help_topic WHERE Name=’MOD’')#提取數(shù)據(jù)庫數(shù)據(jù)# print(user_id)#打印結(jié)果# assert get_sql('SELECT help_topic_id FROM help_topic WHERE Name=’MOD’')#斷言數(shù)據(jù)庫的數(shù)據(jù)是否存在def test_aokao_login(): url=server_ip()+’/service/user/login’ username,password=get_excel_value(1) #讀取文件第二行數(shù)據(jù) json={ 'head':{'accessToken':'','lastnotice':0,'msgid':''}, 'body':{'username':username,'password':password,'forceLogin':0} } # usernamepassword=get_excel_value(4)[0] #讀取文件第二行數(shù)據(jù) # print(type(usernamepassword)) # #把str類型轉(zhuǎn)為字典格式 eval 函數(shù) # json=eval(usernamepassword) r=requests.post(url=url,json=json) print(r.text) assert r.status_code==200 #斷言狀態(tài)碼是否等于200 assert ’'accessToken':'89a08bff-15d7-4d7a-9967-0b5f4fb699ce',’ in r.text #斷言返回信息是否包含accesstokendef test_aokao_registadd(): url = server_ip()+’/service/registration/registadd’ data = { 'head': {'lastnotice': 0, 'msgid': '', 'accessToken': '89a08bff-15d7-4d7a-9967-0b5f4fb699ce'}, 'body': {'clinicid': '978f661e-1782-43bd-8675-b0ff1138ab7c', 'deptid': '09b8515b-b01b-4771-9356-aed6b5aa01bf', 'doctorid': '65ac0251-10ff-473a-af8a-20e8969176f7', 'registtype': 0, 'card_num': '', 'bcc334': '', 'patientopt': 1, 'bkc368': '1', 'patient': {'cardid': '', 'medicalcardid': '', 'label': '', 'sourcetype': 1, 'nationid': '01', 'maritalstatus': 0, 'address': '', 'company': '', 'jobname': '', 'email': '', 'remark': '', 'bcc334': '', 'name': '11', 'gender': 1, 'phone': '', 'birthdate': '2020-03-23', 'patienttype': 1, 'szsbcardid': ''}} } r = requests.post(url=url, json=data, timeout=0.09) print(r.text) print(r.cookies) assert r.status_code == 200 # 斷言狀態(tài)碼是否等于2008.5、report 報(bào)告

主要存放html,xml報(bào)告

python+requests+pytest接口自動化的實(shí)現(xiàn)示例

8.6、run_case 測試執(zhí)行

import pytest’’’測試文件以test_開頭,(以—_test結(jié)尾也可以)測試類以Test開頭,并且不能帶有init 方法測試函數(shù)以test_開頭斷言使用基本的assert即可’’’#如何去運(yùn)行測試用例,_test開頭的函數(shù)就可以,判斷用例運(yùn)行是否成功,assert斷言if __name__=='__main__': #單個(gè)文件運(yùn)行,運(yùn)行添加,對應(yīng)的文件路徑,路徑要用相對路徑 # pytest.main([’../test_case//test_case_01.py’]) #多個(gè)文件運(yùn)行,運(yùn)行添加多個(gè)對應(yīng)的文件路徑,列表的形式,去添加多個(gè)文件的路徑 # pytest.main([’../test_case/test_fore.py’,’../test_case/Dynamic correlation_token.py’]) #運(yùn)行整個(gè)目錄,添加目錄的路徑 pytest.main([’../test_case/’,’--html=../report/report.html’,’--junitxml=../report/report.xml’])’’’pytest生成報(bào)告:1、生成html報(bào)告’--html=../report/report.html’2、生成xml報(bào)告’--junitxml=../report/report.xml’’’’

到此這篇關(guān)于python+requests+pytest接口自動化的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)python 接口自動化內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 最色网在线观看 | 欧美超高清xoxoxoxo | 国产伦精品一区二区三区免费观看 | 欧美精品久久久久久久免费观看 | 日韩中文字幕精品 | 国产系列欧美系列日韩系列在线 | 在线一级视频 | 毛片三| 性视频网站在线 | 成人免费淫片免费观看 | 免费能直接在线观看黄的视频 | 成人三级毛片 | 久久久久久国产精品三级 | 免费日韩在线 | 亚洲1区| 夜夜操影院 | 三黄色| 国产成a人片在线观看视频99 | 国产成人免费永久播放视频平台 | 99久热只有精品视频免费观看17 | 蝌蚪蚪窝视频在线视频手机 | 亚洲欧美7777 | 免费中国一级啪啪片 | 新26uuu在线亚洲欧美 | 日韩一级视频免费观看 | 中文字幕一区二区在线视频 | 久久久久久久久久久96av | 久久视频国产 | 亚洲一区二区三区高清网 | 成人免费观看视频久爱网 | 日韩三级一区二区三区 | 国产精品香蕉在线一区 | 亚洲午夜影视 | 国产成人久久蜜一区二区 | 久久亚洲成人 | 精品香蕉99久久久久网站 | 男女18一级大黄毛片免 | 久久爱成人网 | 午夜精品国产爱在线观看不卡 | 久久久久久国产精品三级 | 成年人黄色网址 |