亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > python+requests+pytest接口自動化的實現示例

python+requests+pytest接口自動化的實現示例

熱門標簽:蘇州人工外呼系統軟件 淮安呼叫中心外呼系統如何 看懂地圖標注方法 佛山通用400電話申請 廣東旅游地圖標注 打印谷歌地圖標注 電話外呼系統招商代理 京華圖書館地圖標注 電話機器人貸款詐騙

1、發送get請求

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

2、發送post請求

#導包
import requests
#定義一個url
url = "http://xxxxxxx"
#傳遞參數
payload="{\"head\":{\"accessToken\":\"\",\"lastnotice\":0,\"msgid\":\"\"},\"body\":{\"user_name\":\"super_admin\",\"password\":\"b50c34503a97e7d0d44c38f72d2e91ad\",\"role_type\":1}}"
headers = {
 'Content-Type': 'text/plain',
 'Cookie': 'akpsysessionid=bafc0ad457d5a99f3a4e53a1d4b32519'
}
#發送post請求
r = requests.post( url=url,headers=headers, data=payload)
#打印結果
print(r.text)

3、發送https請求

import requests
url='https://www.ctrip.com/'
#第一種解決方案,發送請求的時候忽略證書,證書的參數verify用的比較多
r=requests.post(url=url,verify=False)#verify參數默認為True,值為False,表示忽略證書
#第二張解決方案,verify里面添加證書的路徑
r=requests.post(url=url,verify='證書的路徑')#verify參數默認為True,值為False,表示忽略證書
print(r.text)

4、文件上傳

import requests
file = {
    'filename':open('文件名稱','rb')
}
response = requests.post("網址",file)
print(response.text)

5、文件下載

#小文件下載
import requests
r = requests.get("https://img.sitven.cn/Tencent_blog_detail.jpg")
with open(r"D:\a.jpg", "wb") as f:
    f.write(r.content)

#大文件下載
import requests
def 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超時

#導包
import requests
#循環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":""}}
        }
#發送post請求,超時時間0.03s
        r=requests.post(url=url,json=data,timeout=0.03)
        print(r.text)
        print(r.cookies)
    except:
        print('error')

7、鑒權

7.1、auth參數鑒權

import requests
url = '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操作

#實例化session
session = requests.session()
#使用session發起請求
response = session.post(url,headers=req_header,data=form_data)

7.3、token操作

import requests
url="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,帶入下一個接口
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: ibuaiVcKdpRxkhJA
import hashlib
#需要加密的字符串
stringA="appid=wxd930ea5d5a258f4fbody=testdevice_info=1000mch_id=10000100nonce_str=ibuaiVcKdpRxkhJA";
#構建一個對象為md
md=hashlib.md5()
#對stringA字符串進行編碼
md.update(stringA.encode()) 
#生成后的加密值
AES=md.hexdigest()
#把加密的結果,小寫轉大寫 upper函數
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 測試數據(python package)
  • test_case測試用例(python package)
  • report 報告(directory)
  • run_case 測試執行(python package)
  • log 日志


8.1、config配置文件

def server_ip():
    '''
    ait_ip=''開發環境的服務器ip
    sit_ip=''測試環境的服務器ip
    :return: 返回不同服務器的地址
    '''


    server_add={
        'dev_ip' : 'http://his.xxxxxxxxxxx.com',
        'sit_ip' : 'http://his.xxxxxxxxxxxx.comm'
    }
    return server_add['dev_ip']
------------------------------------------------------------------------------------
def sql_conf():
    '''
    host數據庫ip
    user數據庫用戶名
    password數據庫密碼
    database:連接數據庫名
    port數據庫端口
    chrset數據庫字符集 中文utf-8
    :return:
    '''
    host='localhost'
    user='root'
    password='123456'
    database='mysql'
    port=3306
    charset='utf8' #這用utf8,utf-8會報錯
    return host,user,password,database,port,charset

8.2、common 公共的方法

# 封裝一個讀取Excel表格數據的函數
# 對Excel表格數據的讀取需要用到一個庫——xlrd庫
import xlrd
def get_excel_value(i):
    '''
    讀取表中一行的數據
    :return:返回2,3行數據
    '''
    filename = r"../testdata/jiekou.xls" #文件要用相對路徑
    book = xlrd.open_workbook(filename)  # 打開一個工作薄,不需要手動進行關閉
    # sheet = book.sheet_by_name("Sheet1") 根據工作表的名字,獲取一個工作表對象
    sheet = book.sheet_by_index(0)  # 獲取一個工作表,以index的方式,這里是獲取第1個工作表
    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))# 打印單元格[所有數據]的值
    # 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 pymysql
from config.sql_conf import *
def get_sql(sql):
    '''
    :param sql:運行查詢的sql語句
    :return:數據庫查詢結果
    '''
    #建立一個連接對象
    host, user, password, database, port, charset=sql_conf()
    db=pymysql.connect(host=host,user=user,password=password,database=database,port=port,charset=charset)
    #建立一個游標
    cursor=db.cursor()
    #執行sql語句
    cursor.execute(sql)
    #把sql運行的數據保存在data變量里面
    data=cursor.fetchall() #獲取查詢出的所有的值
    cursor.close() #關閉游標
    db.close() #關閉數據庫連接
    return data
# print(get_sql("SELECT help_topic_id FROM help_topic WHERE Name='MOD'")) #執行sql語句
# print(type(get_sql("SELECT help_topic_id FROM help_topic WHERE Name='MOD'")))

8.3、testdata 測試數據

主要存放xls,txt,csv測試數據


8.4、test_case測試用例

from common.get_mysql import get_sql
from config.cof import server_ip
from 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'")#提取數據庫數據
# print(user_id)#打印結果
# assert get_sql("SELECT help_topic_id FROM help_topic WHERE Name='MOD'")#斷言數據庫的數據是否存在

def test_aokao_login():
     url=server_ip()+'/service/user/login'
     username,password=get_excel_value(1) #讀取文件第二行數據
     json={
          "head":{"accessToken":"","lastnotice":0,"msgid":""},
          "body":{"username":username,"password":password,"forceLogin":0}
     }

     # usernamepassword=get_excel_value(4)[0] #讀取文件第二行數據
     # print(type(usernamepassword))
     # #把str類型轉為字典格式 eval 函數
     # json=eval(usernamepassword)
     r=requests.post(url=url,json=json)
     print(r.text)
     assert r.status_code==200 #斷言狀態碼是否等于200
     assert '"accessToken":"89a08bff-15d7-4d7a-9967-0b5f4fb699ce",' in r.text #斷言返回信息是否包含accesstoken

def 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  # 斷言狀態碼是否等于200

8.5、report 報告

主要存放html,xml報告


8.6、run_case 測試執行

import pytest

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

'''
pytest生成報告:
1、生成html報告
'--html=../report/report.html'
2、生成xml報告
'--junitxml=../report/report.xml'
'''

到此這篇關于python+requests+pytest接口自動化的實現示例的文章就介紹到這了,更多相關python 接口自動化內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python接口自動化淺析數據驅動原理
  • Python接口自動化淺析登錄接口測試實戰
  • Python接口自動化淺析unittest單元測試原理
  • python使用pytest接口自動化測試的使用
  • python接口自動化測試數據和代碼分離解析

標簽:湖州 股票 呼和浩特 畢節 江蘇 駐馬店 中山 衡水

巨人網絡通訊聲明:本文標題《python+requests+pytest接口自動化的實現示例》,本文關鍵詞  python+requests+pytest,接口,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python+requests+pytest接口自動化的實現示例》相關的同類信息!
  • 本頁收集關于python+requests+pytest接口自動化的實現示例的相關信息資訊供網民參考!
  • 推薦文章
    日韩免费在线| 可以免费看毛片的网站| 国产成人精品影视| 久久国产精品自线拍免费| 韩国三级一区| 午夜精品国产自在现线拍| 国产不卡福利| 亚洲精品永久一区| 欧美爱爱网| 国产韩国精品一区二区三区| 日韩一级黄色| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产a视频精品免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 91麻豆精品国产高清在线| 国产不卡精品一区二区三区| 国产不卡精品一区二区三区| 国产激情一区二区三区| 久久国产一久久高清| 国产一区二区精品| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频免费看| 国产a视频精品免费观看| 亚洲精品久久久中文字| 亚欧成人乱码一区二区 | 美女被草网站| 国产麻豆精品高清在线播放| 久久久久久久久综合影视网| 成人高清视频在线观看| 日韩在线观看免费| 成人在激情在线视频| 一级片免费在线观看视频| 日韩中文字幕在线亚洲一区| 久久久成人网| 精品久久久久久影院免费| 亚洲天堂在线播放| 亚洲爆爽| 国产麻豆精品高清在线播放| 国产a毛片| 久久国产精品自线拍免费| 国产原创视频在线| a级毛片免费观看网站| 国产a视频精品免费观看| 99久久视频| 天天做日日爱夜夜爽| 精品国产一区二区三区久| 青青久久精品| 999精品在线| 日韩在线观看视频免费| 日韩中文字幕在线播放| 精品视频在线观看一区二区| 精品视频在线看| 香蕉视频亚洲一级| 欧美激情伊人| 日韩中文字幕在线播放| 成人免费观看网欧美片| 欧美激情在线精品video| 精品视频在线观看免费| 尤物视频网站在线| 国产精品1024在线永久免费| 沈樵在线观看福利| 免费一级片在线| 日日夜夜婷婷| 精品国产一区二区三区久久久蜜臀 | 美女免费精品视频在线观看| 午夜激情视频在线播放| 欧美激情一区二区三区在线播放 | 一本高清在线| 久久国产精品永久免费网站| 国产欧美精品| 久久99青青久久99久久| 欧美电影免费| 日本在线不卡视频| 久久99青青久久99久久| 久久精品免视看国产成人2021| 久久久成人网| 国产视频一区在线| 久久国产精品永久免费网站| 九九久久国产精品大片| 精品国产一区二区三区国产馆| 午夜激情视频在线播放| 成人免费高清视频| 国产成人精品综合久久久| 韩国三级视频网站| 麻豆系列 在线视频| 欧美电影免费| 成人免费观看男女羞羞视频| 99色视频| 日日夜夜婷婷| 精品久久久久久影院免费| 四虎影视精品永久免费网站| 国产麻豆精品| 国产精品免费久久| 精品国产亚洲一区二区三区| 久久久久久久久综合影视网| 国产不卡福利| 欧美激情一区二区三区在线播放 | 欧美激情一区二区三区在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久国产精品自线拍免费| 精品国产一区二区三区久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品国产亚一区二区三区| 免费的黄视频| 九九久久国产精品大片| 欧美激情一区二区三区在线播放 | 欧美激情一区二区三区视频高清 | 99色视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚飞与亚基在线观看| 九九干| 免费的黄视频| 亚飞与亚基在线观看| 国产不卡福利| 国产伦久视频免费观看 视频| 台湾毛片| 国产一区二区精品| 日韩专区亚洲综合久久| 99久久精品国产高清一区二区| 黄视频网站在线看| 99热精品在线| 一级毛片视频播放| 国产欧美精品| 国产不卡在线观看视频| 国产a视频精品免费观看| 毛片高清| 精品久久久久久影院免费| 久久国产精品自线拍免费| 亚洲第一色在线| 国产成人啪精品| 台湾毛片| 999久久狠狠免费精品| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日韩欧美一二三区| 高清一级毛片一本到免费观看| 一级女人毛片人一女人| 四虎影视精品永久免费网站| 999久久狠狠免费精品| 精品久久久久久影院免费| 久久99中文字幕久久| 九九精品久久久久久久久| 99色视频| 亚飞与亚基在线观看| 久草免费资源| 高清一级毛片一本到免费观看| 国产伦精品一区二区三区在线观看 | 精品久久久久久中文字幕2017| 日本免费乱理伦片在线观看2018| 韩国三级一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚飞与亚基在线观看| 久久久成人网| 免费的黄视频| 国产不卡福利| a级毛片免费观看网站| 精品视频在线观看一区二区| 香蕉视频久久| 久久福利影视| 精品国产三级a| 久草免费在线观看| 黄色免费三级| 国产不卡福利| 日韩免费在线| 香蕉视频亚洲一级| 精品久久久久久综合网| 国产视频网站在线观看| 久草免费资源| 国产原创视频在线| 天天做人人爱夜夜爽2020| 韩国三级一区| 久久久久久久男人的天堂| 999精品在线| 黄视频网站免费看| 一级毛片视频在线观看| 韩国毛片免费| 精品视频在线看| 成人免费网站久久久| 国产国语对白一级毛片| 国产伦理精品| 九九干| 99久久精品国产高清一区二区| 欧美一级视频高清片| 免费毛片基地| 欧美大片一区| 国产视频一区在线| 国产一区二区精品| 日韩av成人| 久久福利影视| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美大片aaaa一级毛片| 国产网站免费| 999精品视频在线| 午夜在线影院| 亚飞与亚基在线观看| 国产视频网站在线观看| 精品久久久久久中文字幕2017| 日韩中文字幕在线亚洲一区| 亚洲wwwwww| 一本高清在线| 天天做人人爱夜夜爽2020|