婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > python使用pytest接口自動(dòng)化測試的使用

python使用pytest接口自動(dòng)化測試的使用

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

簡單的設(shè)計(jì)思路

  • 利用pytest對一個(gè)接口進(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í)行中,全局只會(huì)執(zhí)行一次(讀取配置文件)
    @classmethod
    def setup_class(self):
        self.text_data = config_txt()
   #方法初始化,此處在測試執(zhí)行中,每條用例都會(huì)先執(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ū)動(dòng),此處獲取了excle用例里的數(shù)據(jù);apitest定個(gè)標(biāo)簽,后續(xù)冒煙啥的可以選擇性的跑(暫時(shí)無用);
    #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報(bào)告

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

 

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

您可能感興趣的文章:
  • Python接口自動(dòng)化淺析數(shù)據(jù)驅(qū)動(dòng)原理
  • Python接口自動(dòng)化淺析登錄接口測試實(shí)戰(zhàn)
  • Python接口自動(dòng)化淺析unittest單元測試原理
  • python+requests+pytest接口自動(dòng)化的實(shí)現(xiàn)示例
  • python接口自動(dòng)化測試數(shù)據(jù)和代碼分離解析

標(biāo)簽:湖州 中山 江蘇 股票 呼和浩特 衡水 畢節(jié) 駐馬店

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python使用pytest接口自動(dòng)化測試的使用》,本文關(guān)鍵詞  python,使用,pytest,接口,自動(dòng)化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python使用pytest接口自動(dòng)化測試的使用》相關(guān)的同類信息!
  • 本頁收集關(guān)于python使用pytest接口自動(dòng)化測試的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久久久久精| 色先锋aa成人| 婷婷国产在线综合| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产日韩影视精品| 免费人成精品欧美精品| 99精品久久99久久久久| 91精品啪在线观看国产60岁| 亚洲成国产人片在线观看| 国产精品女主播在线观看| 国产精品资源站在线| 国产婷婷色一区二区三区在线| 国产精品麻豆99久久久久久| 国产精品白丝在线| 日韩中文字幕av电影| 久久久精品tv| 成人国产亚洲欧美成人综合网| 亚洲高清视频的网址| 成人av电影在线| 国产精品色眯眯| 国产精品高潮呻吟| 美女看a上一区| 91官网在线免费观看| 成人午夜短视频| 一区二区三区四区乱视频| 久久久久久一二三区| 国产成人啪免费观看软件| 国产精品久久久久久户外露出 | 一区二区三区**美女毛片| 一本到不卡精品视频在线观看| 午夜一区二区三区视频| 久久久久久久久伊人| 伊人色综合久久天天人手人婷| 国内一区二区视频| 日韩欧美综合在线| 日本一二三不卡| 综合欧美亚洲日本| 国产欧美精品一区| 欧美日韩一区二区三区在线看| 极品销魂美女一区二区三区| 亚洲地区一二三色| 国产精品美女一区二区| 欧美老肥妇做.爰bbww| 91成人免费网站| 久久66热偷产精品| 欧美一区二区三区视频在线观看| 亚洲精品你懂的| 国产精品国产a级| 欧美大白屁股肥臀xxxxxx| 欧美亚洲高清一区二区三区不卡| 国产91精品露脸国语对白| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 69堂精品视频| 日韩在线一二三区| 国产一区二区三区免费播放 | 国产69精品久久99不卡| 亚洲小少妇裸体bbw| 欧美国产1区2区| 国产成人h网站| 国产真实乱偷精品视频免| 樱花影视一区二区| 国产精品妹子av| 中文字幕乱码久久午夜不卡| 欧美本精品男人aⅴ天堂| 欧美日韩成人在线| 日韩一区二区视频| 欧美久久一区二区| 欧美三级日韩在线| 国产乱人伦精品一区二区在线观看| 亚洲一区二区三区小说| 免费的成人av| 视频一区在线视频| 日产欧产美韩系列久久99| 亚洲综合丁香婷婷六月香| 亚洲欧洲一区二区在线播放| 日本一区二区电影| 18成人在线视频| 国产亚洲成av人在线观看导航| 国产激情视频一区二区在线观看 | 国产大陆a不卡| 国产美女精品在线| 国产精品久久久一本精品| 日韩三级视频在线观看| 欧美巨大另类极品videosbest | 欧美日韩国产在线观看| 日韩精品专区在线影院重磅| 久久免费的精品国产v∧| 中文字幕中文字幕一区二区| 综合久久给合久久狠狠狠97色 | 中文字幕一区二区三区蜜月 | 国产欧美日韩一区二区三区在线观看| 久久精品视频在线免费观看| 久久久三级国产网站| eeuss鲁一区二区三区| 国产一区二区精品在线观看| 亚洲午夜在线观看视频在线| 秋霞午夜鲁丝一区二区老狼| 日韩成人av影视| 国产在线看一区| 国产九色精品成人porny | 一区二区三区不卡在线观看| 欧美久久久一区| 婷婷综合在线观看| 中文字幕不卡一区| 国产精品家庭影院| 日本成人在线视频网站| 国产一区二区三区香蕉| 欧美日韩高清影院| 久久久噜噜噜久噜久久综合| 亚洲一区中文日韩| 久久久久国产精品免费免费搜索| 欧洲精品一区二区三区在线观看| 国产精品一区一区| 精东粉嫩av免费一区二区三区| 91精品国产aⅴ一区二区| 国产精品婷婷午夜在线观看| 91丨porny丨蝌蚪视频| 精品一区二区久久| 中文字幕人成不卡一区| 丝袜亚洲另类欧美| 久久99精品国产麻豆婷婷| kk眼镜猥琐国模调教系列一区二区| 26uuu国产在线精品一区二区| 亚洲精品国产a| 国产福利不卡视频| 成人免费视频播放| 日韩欧美自拍偷拍| 麻豆精品一区二区综合av| 色吊一区二区三区| 欧美国产在线观看| 国产日韩一级二级三级| 中文字幕中文字幕一区二区| 国产精品国产精品国产专区不片| 国产成人鲁色资源国产91色综| 国产一区在线看| 国产精品麻豆一区二区| 欧美无砖专区一中文字| 欧美videofree性高清杂交| 蜜桃精品视频在线观看| 欧美日韩在线亚洲一区蜜芽| 亚洲女人****多毛耸耸8| 精品亚洲porn| 精品国产一区久久| 免费观看久久久4p| 欧美日韩国产系列| 国产精品欧美一区喷水| 一区二区三区在线视频播放| 午夜国产不卡在线观看视频| 美腿丝袜亚洲一区| 日韩欧美aaaaaa| 亚洲欧洲在线观看av| 国内欧美视频一区二区| 欧美日韩电影在线| 欧美三日本三级三级在线播放| 精品久久久久久最新网址| 国产精品一区二区男女羞羞无遮挡| 91精品久久久久久久久99蜜臂| 亚洲成人动漫av| 日韩视频在线一区二区| 亚洲地区一二三色| 欧美日本在线视频| 亚洲va国产va欧美va观看| 在线一区二区三区四区| 久久久国际精品| 成人一区二区三区视频在线观看| av不卡免费电影| 欧美久久一区二区| 亚洲人成小说网站色在线| 午夜久久久影院| 国产乱淫av一区二区三区| 久久综合成人精品亚洲另类欧美| 亚洲高清久久久| 国产精品高潮呻吟久久| 色综合久久综合网| 亚洲一区视频在线观看视频| 欧美精品精品一区| 久久99精品久久久久久国产越南| 国产亚洲欧洲997久久综合| 亚洲国产成人av网| 欧美视频精品在线| 亚洲女同女同女同女同女同69| 欧美精品一区二区三区一线天视频| 韩国成人精品a∨在线观看| 亚洲成av人片一区二区梦乃| 精品日产卡一卡二卡麻豆| 色乱码一区二区三区88| 日韩高清不卡在线| 欧美激情一区二区三区不卡| 久久国产精品第一页| 国产精品蜜臀在线观看| 日韩中文欧美在线| 亚洲人成7777| 国产精品久久毛片av大全日韩| 欧美曰成人黄网| 另类小说色综合网站| 欧美日韩一区在线| 国产乱码精品一区二区三区五月婷| 亚洲黄色av一区| 精品久久久影院| 日韩激情一区二区|