国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建

這篇具有很好參考價值的文章主要介紹了(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前面,已經學習了如何用SpringBoot寫接口以及與Mysql數據庫進行交互,具體可查閱下面的這篇博客,今天學習一下基于Python的接口自動化測試框架的搭建,主要包括以下內容:利用request庫發(fā)送請求,請求數據參數化處理,還涉及到數據庫(Mysql+MongDB)方面的交互,包括如何取數據、如何查數據,最后利用Allure框架,輸出完整的接口自動化測試報告!

(MVC架構)SprintBoot+html/css/js+mybatis的demo_MRJJ_9的博客-CSDN博客

目錄

搭建流程圖?

搭建前的準備工作

request庫發(fā)送請求?

數據驅動

Python與數據庫的交互

Python+Mysql

Python+MongDB

輸出Allure報告

項目結構

Gitee倉庫地址

總結


搭建流程圖

(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建,測試技術,Python基礎,python,自動化

接口自動化測試搭建流程?

搭建前的準備工作

先用SpringBoot寫個登錄接口,相當于mock,啟動項目,使用Python開始搭建整個測試框架。

在搭建整套接口自動化測試流程前,要有開端提到的接口測試的范圍,與數據庫的交互,明白業(yè)務的邏輯,接口請求類型是什么,傳參是什么,預期返回是什么

本博主簡單寫了一個登錄的接口,傳入的郵箱手機號,密碼必須符合一定的限制條件,否則不能登錄成功

關于正則表達式,參考了下面的文章

什么是正則表達式,怎么寫,使用場景等都在這里了 - 知乎 (zhihu.com)

正則表達式(常用的)_/^1[3456789]\d{9}$/_Oxygen_liu的博客-CSDN博客

JAVA 手機號碼格式驗證,使用正則表達式_java 正則手機號195_Steven Jon的博客-CSDN博客

JAVA 電子郵箱格式驗證,使用正則表達式_java郵箱正則表達式_Steven Jon的博客-CSDN博客

JAVA正則表達式校驗密碼必須是包含大小寫字母、數字、特殊符號的8位以上組合____NULL的博客-CSDN博客

package com.example.interfaceautotest.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class Login {
    @PostMapping(value = "/login", produces = "application/json")
    public String Login(String usr, String pw) {
        //加入業(yè)務判斷規(guī)則,用戶名只能輸入手機號和注冊的郵箱
        //usr可以輸入手機號 也可以輸入郵箱
        //大寫字母、小寫字母、數字、特殊符號(不是字母,數字,下劃線,漢字的字符)的8位以上組合
        //手機號 第一位數字是1 第二位數字只能是3或4或5或6或7或8或9 剩下的九位數字可以是0-9之間任意一位數字
        //郵箱判斷
        if ((usr.matches("^1[3-9]\\d{9}") || usr.matches("^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$"))
                && pw.matches("^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$")) {
            return "登錄成功";
        } else {
            return "登錄失敗";
        }
    }
}

request庫發(fā)送請求?

這部分可參考接口測試基礎那篇博客,最常用到get、post兩種請求,傳遞參數類型有params、json、data,請求參數也可參考下面的這篇博客

接口測試基礎_MRJJ_9的博客-CSDN博客

請求參類型params,json,data 含義理解_params和data、json傳參的區(qū)別_默金……的博客-CSDN博客

這里舉post接口傳params的例子,(以開發(fā)文檔為主,依賴于接口的定義)

import requests
class Login:
    def login(self,usr,pw):
        data = {"usr":usr,"pw":pw}
        res = requests.post("http://localhost:8080/test/login",data=data) #也可以用params
        return res.text
if __name__ == '__main__':
    res = Login().login("18988888888","ABCabc012!@#")
    print(res)

數據驅動

讀取excle里的數據,用到xlrd庫讀取數據,并將字符串格式的參數轉成json格式,用于傳遞參數

import xlrd
import json


def is_json(str_data):
    try:
        json.loads(str_data)
    except ValueError:
        return False
    return True


class Argument:
    def excel_control(self, tablePath, sheetName, caseName, *args):
        workBook = xlrd.open_workbook(tablePath)  # 打開表格
        workSheet = workBook.sheet_by_name(sheetName)  # 取第特定sheet頁的表格
        # 取列標 不確定要取哪列的數據  表頭字段 對應的列標
        index = []
        for i in args:
            index.append(workSheet.row_values(0).index(i))
        case_index = 0
        list_case = []
        for one in workSheet.col_values(0):  # 第一列數據遍歷
            if caseName in one:  # 如果第一列中包含“l(fā)ogin” 取出特定列
                getdata = []
                for num in index:  # 要取出的第多少列的數據
                    res = workSheet.cell(case_index, num).value  # 取出第多少行第多少列的數據
                    # 字典轉為字符串
                    if is_json(res):
                        res = json.loads(res)
                    getdata.append(res)
                list_case.append(getdata)
            case_index += 1
        return list_case


if __name__ == '__main__':
    res = Argument().excel_control("../data/test_data.xls", "登錄", "login", "請求參數")

Python與數據庫的交互

在做接口自動化時,對返回結果進行斷言時,需要對數據準確性進行判斷,就需要用到查詢數據庫的操作,下面介紹兩種數據庫,主要涉及Python如何連接和操作數據庫

Python+Mysql

mysql數據庫是一種關系型數據庫,表內表間具有一定的依賴關系,比如用戶登錄賬號、用戶的基本信息等一般存儲在mysql數據庫中

連接myslq,處理數據,可以從mysql中插入、取出數據

import pymysql
class GetUserInfo(object):
    def query_mysql(self):
        #連接數據庫 ip 用戶名 密碼 數據庫名
        db = pymysql.connect(host='127.0.0.1',
                             user='root',
                             password='123456',
                             database='auto_test_data',
                             charset='utf8')
        print("數據庫連接成功!")

        try:
            #獲得執(zhí)行mysql命令的方法
            cursor = db.cursor()
            #sql查詢語句
            sql_query_usr = 'SELECT phone,email,pw FROM user WHERE usr = "test003"'
            cursor.execute(sql_query_usr)#執(zhí)行Mysql語句
            user_info = cursor.fetchall()#接收全部的返回結果行
            print(user_info)
            print(type(user_info)) #查出的數據 存到一個元組里
        except Exception:
            print("查詢失敗")
        db.close() #關閉數據庫
if __name__ == '__main__':
    usr_info = GetUserInfo().query_mysql()

Python+MongDB

MongDB數據庫中可以包含多個文檔,是一個集合的物理容器,相當于就是關系數據庫中的表,以json格式存儲數據

import pymongo
client = pymongo.MongoClient(host = 'localhost', port = 27017)
print(client.list_database_names())
#讀取哪個數據庫
db = client['my_test_data'] #也可以寫成client.my_test_data
#讀取哪個數據表
collection = db['test_data'] #也可以寫成db.test_data
#查詢集合下有多少個文檔
print(collection.count_documents({}))
#篩選出'name'的值是'test002'的文檔
print(collection.find_one({'name':'test002'}))

輸出Allure報告

根據excel里的數據,傳入參數,調用接口,最終會得到每一條case的結果,可以使用allure庫,?展示出整個的完整接口自動化測試報告

(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建,測試技術,Python基礎,python,自動化

import pytest, os, allure
from data_driven_tools.excel_control import Argument
from libs.login import Login


@allure.epic("Test") #史詩級 大的模塊 對應allure報告的第一層
@allure.feature("登錄模塊") #功能點描述 XX模塊 對應第二層
#類名必須以Test開頭
class Test_login():
    # 在xls表里取出傳入的參數
    @pytest.mark.parametrize("caseTitle,data,expdata",
                             Argument().excel_control("../data/test_data.xls", "登錄", "login", "用例名稱", "請求參數",
                                                      "返回結果"))
    @allure.story("登錄接口") #更為具體一層 具體場景 對應第三層
    @allure.title("{caseTitle}") #對應每一條測試用例的名稱 (在excel里維護)
    #調用接口層 傳入excel的參數
    #方法名必須以test_開頭
    def test_login(self, caseTitle, data, expdata):
        data = Login().login(data["usr"], data["pw"])
        #進行斷言
        assert data == expdata


if __name__ == '__main__':
    #pytest框架程序運行入口
    pytest.main(['test_login.py', '-s', '--clean-alluredir','--alluredir','../report/tmp'])
    #打開報告
    os.system("allure serve ../report/tmp")

main()函數命令行里的參數使用介紹:

'test_login.py':執(zhí)行的函數 如果為空,就運行當前項目下所有test_*.py或_test*.py這樣的文件

也可以進行指定運行的路徑,例如:'../test_case/test_login.py',表示執(zhí)行回到上層目錄,進入test_case文件夾,執(zhí)行test_login.py文件

執(zhí)行py文件里指定的類,指定的方法,'../test_case/test_login.py::Test_login::test_login'

-k:可以使用and、or、not等邏輯運算符,區(qū)分匹配的范圍,文件,類,函數名

-s:可以在控制臺輸出print信息(需要去掉-v參數)

-v:顯示詳細的用例執(zhí)行信息

-q:不輸出用例執(zhí)行的情況?

-x:出現一條失敗的測試用例就退出測試

--alluredir:清除上次執(zhí)行的舊報告

--alluredir? ../report/tmp:生成新報告,后面是新報告數據的生成路徑

(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建,測試技術,Python基礎,python,自動化

項目結構

整個項目結構是比較清晰的,分為接口層,數據驅動層,測試用例層

configs:可用來存放配置文件

data:excel:測試用例的數據

data_driven_tools:數據驅動工具,讀取excel里的數據,傳給接口

libs:使用request庫調用接口

report:用于存放生成allure報告的原始數據,格式是json

test_case:存放測試用例,pytest框架執(zhí)行程序的入口

(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建,測試技術,Python基礎,python,自動化

requirements.txt文件,其他人配置環(huán)境需要添加的第三方庫,可自動生成和下載

生成命令:pip freeze > requirements.txt

下載命令:pip install -r requirements.txt

(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建,測試技術,Python基礎,python,自動化

Gitee倉庫地址

interface_auto_test: Rquests+Pytest+Allure (gitee.com)

總結

本篇博客總結了接口自動化項目的整個流程,用到了Pytest庫、Allure庫,xlrd讀取excel里的測試用例,以及python操作數據庫對數據準確性做驗證,實現了接口自動化測試,對重要接口進行測試和數據驗證,可用于冒煙測試,緊急發(fā)版前進行自動化測試,在企業(yè)落地后可以提升工作效率,節(jié)省手工測試的時間文章來源地址http://www.zghlxwxcb.cn/news/detail-638145.html

到了這里,關于(Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python+requests+pytest+allure封裝接口自動化1-項目結構目錄創(chuàng)建,requests庫封裝

    Python+requests+pytest+allure封裝接口自動化1-項目結構目錄創(chuàng)建,requests庫封裝

    api: 這是一個package,用來各個接口的類封裝,按照你的業(yè)務可以將其分為多個package common: 這是一個package,用來封裝底層公共方法,比如requests庫封裝、文件操作封 裝、加解密封裝、redis封裝、數據庫封裝、隨機數據封裝、日志封裝 testcases: 這是一個package,用來編寫封裝我們

    2024年02月12日
    瀏覽(120)
  • (Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建

    (Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建

    前面,已經學習了如何用SpringBoot寫接口以及與Mysql數據庫進行交互,具體可查閱下面的這篇博客,今天學習一下基于Python的接口自動化測試框架的搭建,主要包括以下內容:利用request庫發(fā)送請求,請求數據參數化處理,還涉及到數據庫(Mysql+MongDB)方面的交互,包括如何取數

    2024年02月13日
    瀏覽(721)
  • 接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細)

    接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細)

    接口自動化框架:Python+Requests+Pytest+YAML+Allure 通過 Python+Requests 來發(fā)送和處理HTTP協議的請求接口,使用 Pytest 作為測試執(zhí)行器,使用 YAML 來管理測試數據,使用 Allure 來生成測試報告。 框架結構 api ==== 接口封裝層,如封裝HTTP接口為Python接口 common ==== 各種工具類 core ==== reques

    2024年02月15日
    瀏覽(98)
  • Python+Requests+Pytest+Excel+Allure 接口自動化測試項目實戰(zhàn)【框架之間的對比】

    Python+Requests+Pytest+Excel+Allure 接口自動化測試項目實戰(zhàn)【框架之間的對比】

    ? ? ? ? --------UnitTest框架和PyTest框架的簡單認識對比與項目實戰(zhàn)-------- 定義: Unittest是Python標準庫中自帶的單元測試框架,Unittest有時候也被稱為PyUnit,就像JUnit是Java語言的標準單元測試框架一樣,Unittest則是Python語言的標準單元測試框架。 Pytest是Python的另一個第三方單元測

    2024年02月09日
    瀏覽(94)
  • pytest+requests+Python3.7+yaml+Allure+Jenkins+docker實現接口自動化

    pytest+requests+Python3.7+yaml+Allure+Jenkins+docker實現接口自動化

    目錄 接口自動化測試框架(用例自動生成) 項目說明 技術棧 環(huán)境部署 框架流程圖與目錄結構圖及相關說明 1、框架流程圖如下 2、代碼目錄結構圖如下 關聯詳解 函數助手詳解 代碼設計與功能說明 1、定義運行配置文件 runConfig.yml 2、接口配置文件 apiConfig.ini 3、測試用例的設

    2024年02月09日
    瀏覽(699)
  • python+request+pytest+allure接口自動化使用說明書

    接口自動化使用與流程設計: 一、設計思路 1、一個好的框架,必須要可讀性強,所以目錄規(guī)劃尤為重要; 2、公共的方法提取出來,提高復用性; 3、可變的環(huán)境等參數,提取出來放到配置文件中,這樣,每次只需要更改配置文件中的值; 4、為了追蹤錯誤,需要必要的日志

    2024年02月09日
    瀏覽(126)
  • jenkins實現接口自動化持續(xù)集成(python+pytest+ Allure+git)

    jenkins實現接口自動化持續(xù)集成(python+pytest+ Allure+git)

    在用python做自動化測試時,我們寫好代碼,然后需要執(zhí)行才能得到測試報告,這時我們可以通過 Jenkins 來進一步完成自動化工作。借助Jenkins,我們可以結合 Git/SVN 自動拉取代碼,通過設置定時構建實現自動觸發(fā)腳本執(zhí)行,得到測試報告,最后還可以配置發(fā)送郵件等。今天我們

    2024年02月03日
    瀏覽(93)
  • 測開新手:pytest+requests+allure自動化測試接入Jenkins學習

    測開新手:pytest+requests+allure自動化測試接入Jenkins學習

    2024軟件測試面試刷題,這個小程序(永久刷題),靠它快速找到工作了!(刷題APP的天花板) 最近在這整理知識,發(fā)現在pytest的知識文檔缺少系統性,這里整理一下,方便后續(xù)回憶。 在python中,大家比較熟悉的兩個框架是unittest和pytest: Unittest是Python標準庫中自帶的單元測

    2024年02月01日
    瀏覽(99)
  • Python+Pytest+Allure+Git+Jenkins數據驅動接口自動化測試框架

    Python+Pytest+Allure+Git+Jenkins數據驅動接口自動化測試框架

    一、接口基礎 接口測試是對系統和組件之間的接口進行測試,主要是效驗數據的交換,傳遞和控制管理過程,以及相互邏輯依賴關系。其中接口協議分為HTTP,RPC,Webservice,Dubbo,RESTful等類型。 接口測試流程 1、需求評審,熟悉業(yè)務和需求 2、開發(fā)提供接口文檔 3、編寫接口測

    2024年02月08日
    瀏覽(79)
  • 從0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自動化框架(超細整理)

    從0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自動化框架(超細整理)

    接口測試是對系統和組件之間的接口進行測試,主要是效驗數據的交換,傳遞和控制管理過程,以及相互邏輯依賴關系。其中接口協議分為HTTP,RPC,Webservice,Dubbo,RESTful等類型。 接口測試流程 1、需求評審,熟悉業(yè)務和需求 2、開發(fā)提供接口文檔 3、編寫接口測試用例 4、用

    2024年02月14日
    瀏覽(88)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包