最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用pytest接口自動化測試的使用

 更新時間:2021年04月16日 11:04:56   作者:迷茫的Test小白  
這篇文章主要介紹了python使用pytest接口自動化測試的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡單的設(shè)計思路

  • 利用pytest對一個接口進(jìn)行各種場景測試并且斷言驗(yàn)證
  • 配置文件獨(dú)立開來(conf文件),實(shí)現(xiàn)不同環(huán)境下只需要改環(huán)境配置即可
  • 測試的場景讀取excle的測試用例,可支持全量執(zhí)行或者自定義哪條用例執(zhí)行(用例內(nèi)帶加密變量);
  • 接口入?yún)⑦€包含了加密的邏輯,所以需加一層加密處理

用例的樣例:


應(yīng)用的庫包含:

import pytest
import time, json
import base64, hmac
import hashlib, uuid, re
import requests
import pandas as pd

1. 先定義好conf配置代碼

def config_txt(file_name="config.txt"):
    data_head = list()
    data_tail = list()
    for line in open(file_name, encoding='gb18030', errors='ignore'):
        head, sep, tail = line.partition('=')
        data_head.append(head.strip('\n '))
        if tail.find('#') != -1:
            tail, tail_b, tail_c = tail.partition('#')
        data_tail.append(tail.strip('\n  '))
    txt_data = dict(zip(data_head, data_tail))
    heada, sepa, taila = txt_data["GATEWAY_URL"].partition('/test_a')
    txt_data['HTTP_URI'] = "/test_a" + taila
    return txt_data

conf文件配置樣例:
GATEWAY_URL = https://127.0.0.1:8051/test_a/adk #url鏈接地址
zhu_KEY = test_key  #用戶信息1
zhu_SECRET = test_secret #用戶2
zhu_ID = 18825176013    #用戶ID
zhuLY_ID = 588347220  #用戶信息3

2. 簡單處理一下加密的處理,給后續(xù)持續(xù)調(diào)用

def md5(data_md5):
    data_md5 = hashlib.md5(data_md5.encode(encoding='UTF-8')).hexdigest()
    return data_md5

def sha256(data_sha256):
    data_sha256 = hashlib.sha256(data_sha256.encode(encoding='UTF-8')).hexdigest()
    return data_sha256

def hash_hmac(app_secret, msg, sha1):
    hmac_code = hmac.new(app_secret.encode(), msg.encode(), sha1).digest()
    return base64.b64encode(hmac_code).decode()

3. 處理用例里面的加密變量,例如:請求參數(shù)md5(18812345678)先進(jìn)行數(shù)據(jù)預(yù)處理

def body_encrypt(data_encrypt):
    if data_encrypt.find("sha256(") != -1:
        sha_ss = re.findall(r"sha256[(](.+?)[)]", data_encrypt)
        for i in range(len(sha_ss)):
            data_encrypt = re.compile("sha256[(]" + str(sha_ss[i]) + '[)]').sub(str(sha256(sha_ss[i])), data_encrypt)
    if data_encrypt.find("md5(") != -1:
        md5_ss = re.findall(r"md5[(](.+?)[)]", data_encrypt)
        for i in range(len(md5_ss)):
            data_encrypt = re.compile("md5[(]" + str(md5_ss[i]) + '[)]').sub(str(md5(md5_ss[i])), data_encrypt)
    return data_encrypt

4. 讀取excel文檔里面的用例數(shù)據(jù)做為測試場景

def excel_case(file_name="case_file2.xlsx", case_id="all"):  # 讀取excel賬號及路由代理信息file_name
    data_excle = pd.read_excel(file_name, sheet_name=0, engine="openpyxl")
    df = pd.DataFrame(data_excle)
    if case_id != "all":
        df_data = df[(df.case_id == case_id)].to_dict('list')
    else:
        df_data = df.to_dict('list')
    case_id, case_name = df_data['case_id'], df_data['case_name']
    case_body, case_assert = df_data['case_body'], df_data['case_assert']
    case_body1 = body_encrypt(str(case_body))
    txt_data = list(zip(case_id, case_name, eval(case_body1), case_assert))
    return txt_data

5. 上主菜,pytest的使用

class Test_zhu(object):
    #類初始化,此處在測試執(zhí)行中,全局只會執(zhí)行一次(讀取配置文件)
    @classmethod
    def setup_class(self):
        self.text_data = config_txt()
   #方法初始化,此處在測試執(zhí)行中,每條用例都會先執(zhí)行一遍
    def setup_method(self):
        time.sleep(0.4)
        self.time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
   #request接口請求的邏輯
    def request_id(self, GATEWAY_URL, http_body):
        HTTP_BODY = eval(http_body)
        TIME_STAMP = str(int((time.time() + 5) * 1000))
        zhuCE = uuid.uuid1().hex
        msg = self.text_data['zhuLY_ID'] + "\n" + TIME_STAMP + "\n" + zhuCE + "\n" + self.text_data['zhu_KEY'] + "\n" + \
              self.text_data["HTTP_URI"] + "\n" + json.dumps(HTTP_BODY)
        HTTP_HEADER = {
            "zhu_ID": self.text_data['zhu_ID'],
            "zhuLY_ID": self.text_data['zhuLY_ID'],
            "zhuCE": zhuCE,
            "zhu_KEY": self.text_data['zhu_KEY'],
            "TIMESTAMP": TIME_STAMP,
            "SIGNATURE": hash_hmac(self.text_data['zhu_SECRET'], msg, hashlib.sha1)}
        print('**請求參數(shù):{}.'.format(HTTP_BODY))
        response_one = requests.post(GATEWAY_URL, json=HTTP_BODY, headers=HTTP_HEADER, verify=True)
        print('**響應(yīng)結(jié)果:{}.'.format(response_one.text))
        return eval(response_one.text)
    #parametrize為數(shù)據(jù)驅(qū)動,此處獲取了excle用例里的數(shù)據(jù);apitest定個標(biāo)簽,后續(xù)冒煙啥的可以選擇性的跑(暫時無用);
    #excel_case(case_id="all")說明,all為全部用例執(zhí)行或者指定用例執(zhí)行case_0001
    @pytest.mark.parametrize('case_id,case_name, case_body, case_assert', excel_case(case_id="all"))
    @pytest.mark.apitest
    def test_zhu_case(self, case_id, case_name, case_body, case_assert):
        print("**\n執(zhí)行編號:" + case_id + "\n**用例名稱:" + case_name)
        case_assert_a = json.loads(case_assert)
        alertText = self.request_id(self.text_data['GATEWAY_URL'], case_body)
        retcode = case_assert_a.get('code') if case_assert_a.get('retcode') == None else case_assert_a.get('retcode')
        alertText_a = alertText.get('code') if alertText.get('retcode') == None else alertText.get('retcode')
        #此處為斷言,判斷用例通過還是不通過
        assert alertText_a == retcode
if __name__ == '__main__':
    pytest.main(["-sv", 'zhu_testA.py'])

6. 利用pytest-html庫可以生成html報告

命令:pytest zhu_testA.py --html=report.html --self-contained-html

 

到此這篇關(guān)于python使用pytest接口自動化測試的使用的文章就介紹到這了,更多相關(guān)python 接口自動化測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python之Matlibplot畫圖功能演示過程

    Python之Matlibplot畫圖功能演示過程

    這篇文章主要介紹了Python之Matlibplot畫圖功能演示過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用Folium在Python中進(jìn)行地圖可視化的操作指南

    使用Folium在Python中進(jìn)行地圖可視化的操作指南

    在數(shù)據(jù)分析和可視化領(lǐng)域,地圖可視化是一項(xiàng)非常重要的技能,它能夠幫助我們更直觀地理解和展示地理空間數(shù)據(jù),Folium是一個基于Python的地圖可視化庫,本文將詳細(xì)介紹如何使用Folium在Python中進(jìn)行地圖可視化,需要的朋友可以參考下
    2025-03-03
  • python 實(shí)現(xiàn)提取PPT中所有的文字

    python 實(shí)現(xiàn)提取PPT中所有的文字

    這篇文章主要介紹了python 實(shí)現(xiàn)提取PPT中所有的文字,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python YAML文件處理的完整指南

    Python YAML文件處理的完整指南

    yaml是一種比xml和json更輕的文件格式,也更簡單更強(qiáng)大,它可以通過縮進(jìn)來表示結(jié)構(gòu),聽著就和Python很配對不對?本文給大家詳細(xì)介紹了Python YAML文件處理的完整指南,需要的朋友可以參考下
    2025-07-07
  • 31個必備的Python字符串方法總結(jié)

    31個必備的Python字符串方法總結(jié)

    字符串是Python中基本的數(shù)據(jù)類型,幾乎在每個Python程序中都會使用到它。本文為大家總結(jié)了Python中必備的31個字符串方法,需要的可以參考一下
    2022-03-03
  • Python+PyQt5實(shí)現(xiàn)MySQL數(shù)據(jù)庫備份神器

    Python+PyQt5實(shí)現(xiàn)MySQL數(shù)據(jù)庫備份神器

    在數(shù)據(jù)庫管理工作中,定期備份是確保數(shù)據(jù)安全的重要措施,本文將介紹如何使用Python+PyQt5開發(fā)一個高顏值,多功能的MySQL數(shù)據(jù)庫備份工具,有需要的可以了解下
    2025-05-05
  • Python3并發(fā)寫文件與Python對比

    Python3并發(fā)寫文件與Python對比

    這篇文章主要介紹了Python3并發(fā)寫文件原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python在openstreetmap地圖上繪制路線圖的實(shí)現(xiàn)

    python在openstreetmap地圖上繪制路線圖的實(shí)現(xiàn)

    這篇文章主要介紹了python在openstreetmap地圖上繪制路線圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 從入門到實(shí)戰(zhàn)詳解Python Streamlit如何快速將腳本變成交互式網(wǎng)頁應(yīng)用

    從入門到實(shí)戰(zhàn)詳解Python Streamlit如何快速將腳本變成交互式網(wǎng)頁應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了如何使用Python Streamlit實(shí)現(xiàn)快速將腳本變成交互式網(wǎng)頁應(yīng)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-12-12
  • 利用django和mysql實(shí)現(xiàn)一個簡單的web登錄頁面

    利用django和mysql實(shí)現(xiàn)一個簡單的web登錄頁面

    這篇文章主要給大家介紹了關(guān)于如何利用django和mysql實(shí)現(xiàn)一個簡單的web登錄頁面的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-05-05

最新評論

天祝| 柳河县| 枝江市| 任丘市| 庆城县| 丰城市| 洛川县| 阿克陶县| 屯昌县| 同心县| 广宁县| 黎城县| 梨树县| 灌云县| 广德县| 龙山县| 郧西县| 广宁县| 鹿邑县| 上饶县| 安达市| 辽阳县| 历史| 清徐县| 酉阳| 绍兴县| 怀安县| 庄河市| 格尔木市| 东阳市| 宽甸| 临夏市| 茶陵县| 合肥市| 普洱| 迁安市| 蓬溪县| 新源县| 玛曲县| 延长县| 蒲城县|