1. 程式人生 > >五、Python編寫介面自動化

五、Python編寫介面自動化

1.     總結結果

2.     詳細程式碼:

# -*- coding: utf-8 -*-
import requests
import json

class web_requests(object):
    def __init__(self):
        pass

    def Interface(self,Interface_path,**My_data):
         url = "http://testdj.XXXXXX.com:8378/%s" %(Interface_path) # 測試的介面url
         headers = {"Host": "testdj.XXXXXX
.com:8378"
,                     "Accept": "application/json, text/plain, */*",                     "Referer": "http://testdj.XXXXXX.com:8280/",                     "Accept-Language": "zh-CN,zh;q=0.8",                     "Origin": "http://testdj.XXXXXX.com:8280",                     "Accept-Encoding": "gzip, deflate"
,                     "Accept": "application/json, text/plain, */*",                     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36"} #訊息頭          #data1 = {"beginDate": "2018-01-01", "endDate": "2018-04-01"}  # 介面傳送的引數         
data = My_data  # 介面傳送的引數          r = requests.get(url=url, json=data, headers=headers)  # 傳送請求          # return r.json          print (r.text)  # 獲取響應報文          print (r.status_code) a = web_requests() a.Interface('monitor/sxsb-sxzl',beginDate="2018-01-01", endDate="2018-04-01")

3.     程式碼說明:

1、介面的URL:

url = "http://testdj.XXXXXX.com:8378/%s"%(Interface_path)

 

2、請求訊息頭:

headers = {"Host": "testdj.XXXXXX.com:8378",
          
"Accept": "application/json,text/plain, */*",
           
"Referer": "http://testdj.XXXXXX.com:8280/",
          
"Accept-Language": "zh-CN,zh;q=0.8",
          
"Origin": "http://testdj.XXXXXX.com:8280",
          
"Accept-Encoding": "gzip,deflate",
          
"Accept": "application/json,text/plain, */*",
          
"User-Agent": "Mozilla/5.0(Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/61.0.3163.79 Safari/537.36"} #訊息頭

3、介面的傳引數:

data = My_data  #介面傳送的引數

注:

python傳引數的格式原本如下:

data ={"beginDate": "2018-01-01", "endDate":"2018-04-01"}  # 介面傳送的引數

但為了方便給外部引用進來,做了如下特殊處理:

這裡存在多個引數

a.Interface('monitor/sxsb-sxzl',beginDate="2018-01-01",endDate="2018-04-01")

python將多個引數合併,重點是“**”

def Interface(self,Interface_path,**My_data):

呼叫時可以直接寫:

data = My_data  #介面傳送的引數

相當於:data = {'beginDate':'2018-01-01', 'endDate': '2018-04-01'}

4、給伺服器發起請求:

r = requests.get(url=url, json=data, headers=headers) # 傳送請求

5、伺服器返回結果:

print (r.text) # 獲取響應報文

4.     Robot引用:

(1)、py程式碼

Py檔名:Web_Interface.py

程式碼如下:

# -*- coding: utf-8 -*-

import requests

import json

class Web_Interface(object):

   def __init__(self):

       pass

   def web_interface(self,Interface_path,**My_data):

       url = "http://testdj.XXXXXX.com:8378%s" %(Interface_path)# 測試的介面url

       headers = {"Host": "testdj.XXXXXX.com:8378",

                    "Accept":"application/json, text/plain, */*",

                    "Referer":"http://testdj.XXXXXX.com:8280/",

                   "Accept-Language": "zh-CN,zh;q=0.8",

                    "Origin":"http://testdj.XXXXXX.com:8280",

                   "Accept-Encoding": "gzip, deflate",

                    "Accept":"application/json, text/plain, */*",

                    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/61.0.3163.79 Safari/537.36"} #訊息頭

       #data1 = {"beginDate": "2018-01-01","endDate": "2018-04-01"} # 介面傳送的引數

       data = My_data  # 介面傳送的引數

       r = requests.get(url=url, json=data, headers=headers)  # 傳送請求

       #print (r.text)  # 獲取響應報文

       #print (r.status_code) # 獲取結果碼

       return json.loads(r.text)

(2)、引用py指令碼

(3)、robot使用

(4)輸出結果

5.     參見問題:

(1)、python介面能返回結果,但在獲取結果裡的data值卻報錯了(string indices must be integers)

原因是介面返回結果沒有轉換轉成obj

  原始碼:

     return r.text

  用json.loads 修復如下:

      return json.loads(r.text)

相關推薦

Python編寫介面自動化

1.     總結結果2.     詳細程式碼:# -*- coding: utf-8 -*- import requests import json class web_requests(object):     def __init__(self):         p

Python基礎:Python程序的編寫方式

python代碼 兩種 cmd 文件 使用 通過 utf-8 註意 python基礎 python程序有兩種編寫方式: 1. 進入cmd控制臺(linux終端),輸入python進入編輯模式,這時候我們可以直接編寫python程序 2. 也可以在.py文件中編寫pyth

python開發之網絡通信socket

bin PE 本機 線程 seq read sock_raw get HR 一、客戶端: 1、導入socket庫 import socket 2、指定協議類型 client = socket.socket( ) #不填默認是socket.A

三十python學習之Flask框架(七)資料庫:Flask對資料庫的基本操作常見關係模板資料庫遷移綜合案例:圖書管理

補充:   使用SQL_Alchemy定義一個模型類,不可以不指定primary_key=True建立表. 一、資料庫基本操作 1. 資料庫的基本操作(CRUD): 在Flask-SQLAlchemy中,插入、修改、刪除操作,均由資料庫會話管理。

二十python學習之前端(八): JQuery高階

一、事假冒泡: 1. 什麼是事件冒泡 : 事件是可以傳播的; 事件冒泡不僅存在於JQ,原生JS也是存在事件冒泡的; 事件冒泡就是傳播的一種形式; 事件的傳播形式: 冒泡和捕獲 ; 事件冒泡:子元素的時間被處罰, 父盒子元素的同類事件也會被觸發。大多

python+requests介面自動化--請求方法封裝

1 import requests 2 from common.logger import Log 3 from common import cof 4 from common import base 5 6 7 class MyHttpservice(object): 8 9

Python-requests介面自動化小記

       之前用過Jmeter和Postman做http介面請求,因工作需要需用程式碼自動化跑覆蓋,我用的是python語言;經過快2周的實踐,已經基本可以實現介面自動化,現將使用過程中遇到的問題和大家分享下。   1、請求https安全

python--utp介面自動化測試框架

測試套件:testsuite  多個用例放在一起 unittest  1、函式名必須是test開頭,unittest才會幫你執行               2、用例執行的順序是按照函式的首字母排序的,a-z te

python學習之MySQL資料庫(二):資料庫的操作

 一、資料庫的操作: 1.資料庫操作的概述: 在資料庫操作中,基本操作都是圍繞增刪改查來操作。簡稱CRUD C Create 建立 R Read/Retrieve 查詢 U Update 修改 D Delete 刪除 2.資料庫操作 在數操作資料庫時,所有的資料

【selenim3+Python介面自動化測試教程

一、開啟瀏覽器 selenium3支援基本上目前市面上最常見的幾種瀏覽器,本文只寫其中的chrome、firefox和ie的相關操作; 1、chrome瀏覽器 (1)、chromeDriver獲取 chromeDriver獲取地址為:http://chromed

python-----編寫介面,使用postman與soapiu訪問呼叫

例項:自己寫一個註冊介面 輸入使用者名稱、密碼、驗證碼,當滿足註冊將密碼進行md5加密。 場景 介面返回引數 提示 使用者名稱存在 2000 exit 使用者已存在 密碼與驗證碼

python學習筆記:記憶體管理

變數和記憶體管理的 細節, 包括: 變數無須事先宣告 變數無須指定型別 程式設計師不用關心記憶體管理 變數名會被“回收” del 語句能夠直接釋放資源 1、變數定義 變數只有被建立和賦值後才能被使用 2、動態型別 還要注意一點,Python 中不但變數名無需事

怎樣用開源自動化測試平臺LuckyFrame編寫介面自動化測試用例

該自動化平臺分成兩部分,web端負責測試用例編寫及用例排程等.客戶端用於具體執行用例. 客戶端和伺服器端以及mysql資料庫的安裝和配置請參考官網 http://www.luckyframe.cn/book/yhsc/syschyy-24.html 一、客戶端的配置工作 1.客戶

python request 介面自動化設計

設計思路:   * 資料驅動   * 測試結果以郵件形式傳送   * 保留測試過程的用例和請求結果到日誌,方便查問題   設計如下:   * bin     * casehandler  讀取txt或者xls檔案中的用例,一個檔案是一個用例,返回Case()例項     * mailhandl

四十python學習之Djnago(DRF框架一):介紹及環境搭建

引入DjangoRESTframework 一、Web應用模式: 在開發Web應用中,有兩種應用模式: 前後端不分離 前後端分離 1.前後端不分離:   在前後端不分離的應用模式中,前端頁面看到的效果都是有後端控制的,有後端渲染頁面重定向,也就是後端需要控

python+requests介面自動化測試實戰

python+request+unittest+HTMLTestRunner 首先介紹一下python的requests模組: requests的使用介紹:requests快速入門 環境說明: 1.WIN 7, 64位 2.Python3.4.3 (pip-8.1.2)

微信介面

在res裡邊建drawable,drawable裡邊建selector下的sel_r.xml:             <?xml version="1.0" encod

python+requests介面自動化測試

轉自https://my.oschina.net/u/3041656/blog/820023 原來的web頁面功能測試轉變成介面測試,之前大多都是手工進行,利用postman和jmeter進行的介面測試,後來,組內有人講原先web自動化的測試框架移駕成介面的自動化框架,使用的是java語言,但對於一個學ja

python+requests介面自動化測試框架例項詳解教程

前段時間由於公司測試方向的轉型,由原來的web頁面功能測試轉變成介面測試,之前大多都是手工進行,利用postman和jmeter進行的介面測試,後來,組內有人講原先web自動化的測試框架移駕成介面的自動化框架,使用的是java語言,但對於一個學java,卻在學python的我來說,覺得python比起jav

python 缺失值處理(Imputation)

一、缺失值的處理方法       由於各種各樣的原因,真實世界中的許多資料集都包含缺失資料,這些資料經常被編碼成空格、nans或者是其他的佔位符。但是這樣的資料集並不能被scikit - learn演算法相容,因為大多數的學習演算法都會預設陣列中的元素都是數值,因此素偶有的