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

主頁 > 知識庫 > Pytest接口自動化測試框架搭建模板

Pytest接口自動化測試框架搭建模板

熱門標(biāo)簽:江蘇客服外呼系統(tǒng)廠家 清遠(yuǎn)360地圖標(biāo)注方法 平頂山外呼系統(tǒng)免費(fèi) 西藏智能外呼系統(tǒng)五星服務(wù) 原裝電話機(jī)器人 400電話申請服務(wù)商選什么 工廠智能電話機(jī)器人 在哪里辦理400電話號碼 千陽自動外呼系統(tǒng)

auto_api_test

開發(fā)環(huán)境: Pycharm

開發(fā)語言版本: python3.7.8

測試框架: Pytest、測試報告: Allure

項目源碼Git地址

項目目錄結(jié)構(gòu)

  • api – 模仿PO模式, 抽象出頁面類, 頁面類內(nèi)包含頁面所包含所有接口, 并封裝成方法可供其他模塊直接調(diào)用
  • config – 配置文件目錄
  • data – 測試數(shù)據(jù)目錄
  • doc – 文檔存放目錄
  • log – 日志
  • report – 測試報告
  • scripts – 測試腳本存放目錄
  • tools – 工具類目錄
  • .gitignore – git忽略
  • app.py – 命令行啟動入口
  • pytest.ini – pytest測試框架配置文件
  • README.md – 開發(fā)說明文檔

代碼分析

pytest.ini

pytest框架的配置文件

[pytest]
addopts = --html=../report/report.html  # pytest-html報告插件配置 
;addopts = -s --alluredir report  # allure-pytest報告插件配置
testpaths = ./scripts  # 設(shè)置用例目錄識別名稱
python_files = test*_*.py  # 設(shè)置測試文件識別名稱
python_classes = Test*  # 設(shè)置測試類識別名稱
python_functions = test_*  # 設(shè)置測試方法識別名稱

app.py

# 基礎(chǔ)路由(方便在部署環(huán)境發(fā)生變化時切換全局基礎(chǔ)路由)
BASE_URL = "http://xxxx.com"
# 獲取腳本的絕對路徑(腳本在項目根目錄就可以理解為項目路徑)
ABS_PATH = os.path.abspath(__file__)
BASE_DIR = os.path.dirname(ABS_PATH)

# 命令行啟動此腳本時執(zhí)行測試用例
pytest.main(["scripts/"])

/config/config.json

配置文件, 目前包含全局請求頭配置、類似全局變量的設(shè)置, 可通過tools內(nèi)的工具函數(shù)進(jìn)行讀寫
請求頭具體參數(shù)根據(jù)需要自行配置

{
 "headers": {
  "Host": "xxx.com",
  "Connection": "keep-alive",
  "Accept": "application/json, text/plain, */*",
  "Authorization": "xxxx",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
  "Content-Type": "application/json;charset=UTF-8",
  "Origin": "http://xxx.com",
  "Referer": "http://xxx.com/",
  "Accept-Encoding": "gzip, deflate",
  "Accept-Language": "zh-CN,zh;q=0.9"
 }
}

/api/template_api.py

頁面類模板, 包含頁面接口的請求方法(增刪改查)封裝, 主要在此定義好接口和請求入?yún)⒌葍?nèi)容

# 導(dǎo)包
import app
import json
from tools.config_info import get_header


class TemplateAPI:
  # xx添加接口
  api_add_url = app.BASE_URL + "/xxx/xxxx/add"
  # xx修改接口
  api_upd_url = app.BASE_URL + "/xxx/xxxx/upd"
  # xx查詢接口
  api_get_url = app.BASE_URL + "/xxx/xxxx/get"
  # xx刪除接口
  api_del_url = app.BASE_URL + "/xxx/xxxx/del/{id}"

  # xx添加接口函數(shù)實(shí)現(xiàn)
  def api_add(self, session, attr1, attr2):
    post_data = {
      "attr1": attr1,
      "attr2": attr2
    }
    return session.post(self.api_add_url, headers=get_header(), data=json.dumps(post_data))

  # xx修改接口函數(shù)實(shí)現(xiàn)
  def api_upd(self, session, attr1, attr2):
    put_data = {
      "attr1": attr1,
      "attr2": attr2
    }
    return session.put(self.api_upd_url, headers=get_header(), data=json.dumps(put_data))

  # xx查詢接口函數(shù)實(shí)現(xiàn)
  def api_get(self, session, attr1, attr2):
    params = {
      "attr1": attr1,
      "attr2": attr2
    }
    return session.get(self.api_get_url, headers=get_header(), params=params)

  # xx刪除接口函數(shù)實(shí)現(xiàn)
  def api_del(self, session, uid):
    return session.delete(self.api_del_url.format(id=uid), headers=get_header())

/scripts/test_template.py

測試類以Test開頭, 測試類和測試方法添加allure裝飾器

前置測試類方法 - 初始化requests請求庫的session對象, 創(chuàng)建對應(yīng)的頁面對象

后置測試類方法 - 關(guān)閉session對象

前置測試方法 - 加休眠

測試方法中添加可選參數(shù)化裝飾器, 測試方法中通過頁面對象調(diào)用頁面接口請求方法, 傳入requests的session對象和方法需要的必要參數(shù), 進(jìn)行響應(yīng)結(jié)果的處理和斷言等操作

日志器可通過引入工具調(diào)用

# 導(dǎo)包
import pytest
import requests
from time import sleep
from api.template_api import TemplateAPI
from tools.get_log import GetLog
from tools.read_file import read_json
import allure

# 獲取日志器
log = GetLog.get_log()


@allure.feature('測試類模板')
class TestTemplate:
  session = None

  # 初始化方法
  @classmethod
  def setup_class(cls):
    cls.session = requests.Session()  # 初始化session對象
    cls.template = TemplateAPI()

  # 結(jié)束方法
  @classmethod
  def teardown_class(cls):
    cls.session.close()

  @classmethod
  def setup(cls):
    sleep(1.5)

  # 測試方法
  @allure.story("測試方法模板-add")
  @pytest.mark.parametrize(("attr1", "attr2", "success", "expect"), read_json("test_add"))
  def test_add(self, attr1, attr2, success, expect):
    # 添加功能API調(diào)用
    response = self.template.api_add(self.session, attr1, attr2)
    # 打印日志
    log.info("添加功能-狀態(tài)碼為: {}".format(response.status_code))
    # 斷言狀態(tài)碼
    assert response.status_code == expect, "狀態(tài)碼斷言失敗"

  @allure.story("測試方法模板-upd")
  @pytest.mark.parametrize(("attr1", "attr2", "success", "expect"), read_json("test_upd"))
  def test_upd(self, attr1, attr2, success, expect):
    # 添加功能API調(diào)用
    response = self.template.api_upd(self.session, attr1, attr2)
    # 打印日志
    log.info("修改功能-狀態(tài)碼為: {}".format(response.status_code))
    # 斷言狀態(tài)碼
    assert response.status_code == expect, "狀態(tài)碼斷言失敗"

  @allure.story("測試方法模板-get")
  @pytest.mark.parametrize(("attr1", "attr2", "success", "expect"), read_json("test_get"))
  def test_get(self, attr1, attr2, success, expect):
    # 添加功能API調(diào)用
    response = self.template.api_get(self.session, attr1, attr2)
    # 打印日志
    log.info("查詢功能-狀態(tài)碼為: {}".format(response.status_code))
    # 斷言狀態(tài)碼
    assert response.status_code == expect, "狀態(tài)碼斷言失敗"

  @allure.story("測試方法模板-del")
  @pytest.mark.parametrize(("uid", "success", "expect"), read_json("test_del"))
  def test_del(self, uid, success, expect):
    # 添加功能API調(diào)用
    response = self.template.api_del(self.session, uid)
    # 打印日志
    log.info("刪除功能-狀態(tài)碼為: {}".format(response.status_code))
    # 斷言狀態(tài)碼
    assert response.status_code == expect, "狀態(tài)碼斷言失敗"

/data | /tools

測試數(shù)據(jù)和具體的操作工具類根據(jù)需要自定義

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

您可能感興趣的文章:
  • python pytest進(jìn)階之fixture詳解
  • 詳解Pytest測試用例的執(zhí)行方法
  • Python pytest裝飾器總結(jié)(實(shí)例詳解)
  • python pytest進(jìn)階之conftest.py詳解
  • pytest自動化測試fixture的作用域?qū)嵗樞蚣翱捎眯?/li>

標(biāo)簽:西安 安慶 錦州 白城 股票 天水 隨州 日照

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pytest接口自動化測試框架搭建模板》,本文關(guān)鍵詞  Pytest,接口,自動化,測試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pytest接口自動化測試框架搭建模板》相關(guān)的同類信息!
  • 本頁收集關(guān)于Pytest接口自動化測試框架搭建模板的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩一区二区三区视频| 不卡高清视频专区| 欧美色区777第一页| 老司机精品视频线观看86| 1区2区3区欧美| 久久日韩精品一区二区五区| 欧美日韩国产电影| 亚洲精品综合在线| 日韩午夜激情电影| 欧美一区二区三区性视频| 欧美精三区欧美精三区| 日本韩国视频一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲精品久久久久久国产精华液| 国产精品毛片久久久久久久| 欧美韩国日本综合| 亚洲丝袜制服诱惑| 亚洲成人动漫精品| 精品一区二区免费在线观看| 国产乱码精品一区二区三区忘忧草| 久热成人在线视频| 国产91清纯白嫩初高中在线观看| 国产精品羞羞答答xxdd| 不卡视频一二三| 欧美理论在线播放| 亚洲精品在线免费播放| 久久久精品欧美丰满| 国产精品美女www爽爽爽| 亚洲国产电影在线观看| 亚洲国产cao| 国产精品一色哟哟哟| 欧美性受xxxx黑人xyx| 精品国产乱码久久久久久牛牛| 国产精品美女久久久久aⅴ国产馆| 亚洲一区二区偷拍精品| 丰满少妇在线播放bd日韩电影| 成人深夜福利app| 日韩视频免费观看高清完整版| 国产亚洲欧美色| 人人超碰91尤物精品国产| 99精品国产热久久91蜜凸| 91麻豆精品91久久久久久清纯| 久久精品亚洲乱码伦伦中文 | 欧美美女一区二区在线观看| 337p日本欧洲亚洲大胆精品| 五月激情综合婷婷| 欧美午夜电影网| 亚洲天堂精品视频| 91成人网在线| 亚洲国产中文字幕| 91精品一区二区三区在线观看| 亚洲成av人片一区二区梦乃| 欧美综合欧美视频| 蜜桃视频一区二区三区在线观看| 欧美一级片在线| 国产精一区二区三区| 欧美国产综合色视频| 99久久精品情趣| 精品一区二区三区在线播放视频| 日韩在线一区二区| 日韩欧美国产综合一区| 激情图片小说一区| 亚洲国产激情av| 在线观看中文字幕不卡| 日韩精品电影一区亚洲| 亚洲精品一区二区精华| av电影天堂一区二区在线观看| 亚洲成av人片www| 国产精品五月天| 3d动漫精品啪啪一区二区竹菊| 免费观看在线色综合| 亚洲午夜一区二区| 亚洲欧洲性图库| 久久综合色综合88| 在线中文字幕一区二区| 国产河南妇女毛片精品久久久| 一区二区三区在线影院| 中文字幕在线不卡国产视频| 欧美一区2区视频在线观看| 欧美在线免费观看视频| 色综合久久综合| 成人av手机在线观看| 国产毛片精品视频| 激情伊人五月天久久综合| 青青草97国产精品免费观看 | 综合在线观看色| 国产色产综合产在线视频| 精品裸体舞一区二区三区| 69av一区二区三区| 欧美日本一区二区| 老司机免费视频一区二区| 六月丁香婷婷色狠狠久久| 亚洲超丰满肉感bbw| 美脚の诱脚舐め脚责91| 蜜臀av一区二区| 视频一区视频二区中文| 无吗不卡中文字幕| 亚洲欧美电影一区二区| 亚洲丰满少妇videoshd| 日韩高清电影一区| 成人性生交大片免费| 91偷拍与自偷拍精品| 91精品国产91久久综合桃花| 精品欧美一区二区久久| 中文字幕高清不卡| 五月天婷婷综合| 成人精品鲁一区一区二区| 在线观看欧美日本| 国产日韩欧美精品一区| 亚洲一区二区三区视频在线| 日韩成人一级大片| 一本在线高清不卡dvd| 欧美岛国在线观看| 亚洲午夜激情网站| 不卡一区在线观看| 久久人人爽爽爽人久久久| 国产一区在线不卡| 免费成人av资源网| 亚洲人成人一区二区在线观看| 欧美偷拍一区二区| 2023国产一二三区日本精品2022| 一区二区三区久久久| 国产精品自拍av| 欧美综合一区二区三区| 国产精品乱码人人做人人爱| 日韩 欧美一区二区三区| www.亚洲精品| 欧美日韩色综合| 亚洲欧美综合另类在线卡通| 国产精品亚洲一区二区三区在线| 国产精品久久久久久久久果冻传媒 | 成人精品一区二区三区中文字幕| 精品奇米国产一区二区三区| 久久精品视频免费观看| 亚洲午夜精品17c| 国产女主播在线一区二区| 夜夜精品浪潮av一区二区三区| 久久激情综合网| 国产成人午夜精品5599| 欧美第一区第二区| 亚洲人一二三区| av中文一区二区三区| 国产成人午夜片在线观看高清观看| 色嗨嗨av一区二区三区| 高清日韩电视剧大全免费| 国产a视频精品免费观看| 欧美日韩精品福利| 久久av老司机精品网站导航| 免费在线视频一区| 国产亚洲精品bt天堂精选| 中文字幕乱码久久午夜不卡| 日本一区二区久久| 日韩欧美成人激情| 精品中文av资源站在线观看| 欧美激情综合网| 成人黄色在线看| 欧美影院精品一区| 国产精品久久一卡二卡| 久久精品国产免费看久久精品| 亚洲综合小说图片| 欧美激情综合在线| 91麻豆精品在线观看| 国产亚洲一区二区三区在线观看 | 中文字幕二三区不卡| 亚洲第一福利一区| 激情综合网av| 亚洲激情校园春色| 亚洲精品国产精品乱码不99 | 中文久久乱码一区二区| 久久久久国产精品麻豆| 欧美日韩一二三| 久久99国产精品久久| 奇米四色…亚洲| 国产精品亲子乱子伦xxxx裸| 国产一区二区三区电影在线观看 | 久久精品亚洲精品国产欧美kt∨| 中文字幕不卡三区| 亚洲天堂中文字幕| 亚洲一区二区中文在线| 欧美大黄免费观看| 丰满岳乱妇一区二区三区| 久久久久久久久久久久久夜| 精品少妇一区二区三区免费观看 | 91精品国产入口| 色综合久久88色综合天天| 亚洲视频图片小说| 春色校园综合激情亚洲| 国产精品国模大尺度视频| 91亚洲大成网污www| 亚洲国产成人av| 亚洲精品伦理在线| 综合精品久久久| 中文字幕欧美日本乱码一线二线| 欧美大片在线观看| 国产片一区二区| 国产农村妇女精品| 亚洲啪啪综合av一区二区三区| 最新久久zyz资源站| 亚洲一区在线电影| 一区二区三区不卡视频|