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

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

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


前言

接口自動化框架:Python+Requests+Pytest+YAML+Allure

通過 Python+Requests 來發(fā)送和處理HTTP協(xié)議的請求接口,使用 Pytest 作為測試執(zhí)行器,使用 YAML 來管理測試數(shù)據(jù),使用 Allure 來生成測試報告。

框架結構

api ====>> 接口封裝層,如封裝HTTP接口為Python接口
common ====>> 各種工具類
core ====>> requests請求方法封裝、關鍵字返回結果類
config ====>> 配置文件
data ====>> 測試數(shù)據(jù)文件管理
operation ====>> 關鍵字封裝層,如把多個Python接口封裝為關鍵字
pytest.ini ====>> pytest配置文件
requirements.txt ====>> 相關依賴包文件
testcases ====>> 測試用例

請求方法封裝:
在 core/rest_client.py 文件中,對 Requests 庫下一些常見的請求方法進行了簡單封裝,以便調用起來更加方便。

class RestClient():

    def __init__(self, api_root_url):
        self.api_root_url = api_root_url
        self.session = requests.session()

    def get(self, url, **kwargs):
        return self.request(url, "GET", **kwargs)

    def post(self, url, data=None, json=None, **kwargs):
        return self.request(url, "POST", data, json, **kwargs)

    def put(self, url, data=None, **kwargs):
        return self.request(url, "PUT", data, **kwargs)

    def delete(self, url, **kwargs):
        return self.request(url, "DELETE", **kwargs)

    def patch(self, url, data=None, **kwargs):
        return self.request(url, "PATCH", data, **kwargs)

    def request(self, url, method, data=None, json=None, **kwargs):
        url = self.api_root_url + url
        headers = dict(**kwargs).get("headers")
        params = dict(**kwargs).get("params")
        files = dict(**kwargs).get("params")
        cookies = dict(**kwargs).get("params")
        self.request_log(url, method, data, json, params, headers, files, cookies)
        if method == "GET":
            return self.session.get(url, **kwargs)
        if method == "POST":
            return requests.post(url, data, json, **kwargs)
        if method == "PUT":
            if json:
                # PUT 和 PATCH 中沒有提供直接使用json參數(shù)的方法,因此需要用data來傳入
                data = complexjson.dumps(json)
            return self.session.put(url, data, **kwargs)
        if method == "DELETE":
            return self.session.delete(url, **kwargs)
        if method == "PATCH":
            if json:
                data = complexjson.dumps(json)
            return self.session.patch(url, data, **kwargs)

HTTP接口 封裝為 Python接口:
在 api/user.py 文件中,將上面封裝好的HTTP接口,再次封裝為不同的Python接口。不同的Python接口,會處理不同URL下的請求。

class User(RestClient):

    def __init__(self, api_root_url, **kwargs):
        super(User, self).__init__(api_root_url, **kwargs)

    def list_all_users(self, **kwargs):
        return self.get("/users", **kwargs)

    def list_one_user(self, username, **kwargs):
        return self.get("/users/{}".format(username), **kwargs)

    def register(self, **kwargs):
        return self.post("/register", **kwargs)

    def login(self, **kwargs):
        return self.post("/login", **kwargs)

    def update(self, user_id, **kwargs):
        return self.put("/update/user/{}".format(user_id), **kwargs)

    def delete(self, name, **kwargs):
        return self.post("/delete/user/{}".format(name), **kwargs)

關鍵字返回結果類:
在 core/result_base.py 下,定義了一個空類 ResultBase ,該類主要用于自定義關鍵字返回結果。

class ResultBase():
    pass

"""
自定義示例:
result = ResultBase()
result.success = False
result.msg = res.json()["msg"]
result.response = res
"""` 

在多流程的業(yè)務場景測試下,通過自定義期望保存的返回數(shù)據(jù)值,以便更好的進行斷言。

關鍵字封裝:
關鍵字應該是具有一定業(yè)務意義的,在封裝關鍵字的時候,可以通過調用多個Python接口來完成。

在某些情況下,比如測試一個充值接口的時候,在充值后可能需要調用查詢接口得到最新賬戶余額,來判斷查詢結果與預期結果是否一致,那么可以這樣來進行測試:

1、首先,可以把 充值-查詢 的操作封裝為一個關鍵字,在這個關鍵字中依次調用充值和查詢的接口,并可以自定義關鍵字的返回結果。

2、接著,在編寫測試用例的時候,直接調用關鍵字來進行測試,這時就可以拿到關鍵字返回的結果,那么斷言的時候,就可以直接對關鍵字返回結果進行斷言。

測試用例層

1、根據(jù)用例名分配測試數(shù)據(jù)
測試數(shù)據(jù)位于 data 文件夾下,在這里使用 YAML 來管理測試數(shù)據(jù),同時要求測試數(shù)據(jù)中第一層的名稱,需要與測試用例的方法名保持一致,如 test_get_all_user_info 、test_delete_user。

test_get_all_user_info:
  # 期望結果,期望返回碼,期望返回信息
  # except_result, except_code, except_msg
  - [True, 0, "查詢成功"]
省略
test_delete_user:
  # 刪除的用戶名,期望結果,期望返回碼,期望返回信息
  # username, except_result, except_code, except_msg
  - ["測試test", True, 0, "刪除用戶信息成功"]
  - ["wintest3", False, 3006, "該用戶不允許刪除"]

這里借助 fixture 方法,我們就能夠通過 request.function.name 自動獲取到當前執(zhí)行用例的函數(shù)名 testcase_name ,當我們傳入測試數(shù)據(jù) api_data 之后,接著便可以使用 api_data.get(testcase_name) 來獲取到對應用例的測試數(shù)據(jù)。

import pytest
from testcases.conftest import api_data

@pytest.fixture(scope="function")
def testcase_data(request):
    testcase_name = request.function.__name__
    return api_data.get(testcase_name)`

2、數(shù)據(jù)準備和清理
在接口自動化中,為了保證用例可穩(wěn)定、重復地執(zhí)行,我們還需要有測試前置操作和后置操作,即數(shù)據(jù)準備和數(shù)據(jù)清理工作。

@pytest.fixture(scope="function")
def delete_register_user():
    """注冊用戶前,先刪除數(shù)據(jù),用例執(zhí)行之后,再次刪除以清理數(shù)據(jù)"""
    del_sql = base_data["init_sql"]["delete_register_user"]
    db.execute_db(del_sql)
    logger.info("注冊用戶操作:清理用戶--準備注冊新用戶")
    logger.info("執(zhí)行前置SQL:{}".format(del_sql))
    yield # 用于喚醒 teardown 操作
    db.execute_db(del_sql)
    logger.info("注冊用戶操作:刪除注冊的用戶")
    logger.info("執(zhí)行后置SQL:{}".format(del_sql))

在這里,以用戶注冊用例為例。對于前置操作,我們應該準備一條刪除SQL,用于將數(shù)據(jù)庫中已存在的相同用戶刪除,對于后置操作,我們應該再執(zhí)行刪除SQL,確保該測試數(shù)據(jù)正常完成清理工作。

在測試用例中,我們只需要在用例上傳入 fixture 的函數(shù)參數(shù)名 delete_register_user ,這樣就可以調用 fixture 實現(xiàn)測試前置及后置操作。當然,也可以使用pytest裝飾器 @pytest.mark.usefixtures() 來完成,如:

@pytest.mark.usefixtures("delete_register_user")` 

3、Allure用例描述
在這里,我們結合 Allure 來實現(xiàn)輸出測試報告,同時我們可以使用其裝飾器來添加一些用例描述并顯示到測試報告中,以便報告內容更加清晰、直觀、可讀。

如使用 @allure.title() 自定義報告中顯示的用例標題,使用 @allure.description() 自定義用例的描述內容,使用 @allure.step() 可在報告中顯示操作步驟,使用 @allure.issue() 可在報告中顯示缺陷及其鏈接等。

@allure.step("步驟1 ==>> 注冊用戶")
def step_1(username, password, telephone, sex, address):
    logger.info("步驟1 ==>> 注冊用戶 ==>> {}, {}, {}, {}, {}".format(username, password, telephone, sex, address))

@allure.severity(allure.severity_level.NORMAL)
@allure.epic("針對單個接口的測試")
@allure.feature("用戶注冊模塊")
class TestUserRegister():
    """用戶注冊"""
    @allure.story("用例--注冊用戶信息")
    @allure.description("該用例是針對獲取用戶注冊接口的測試")
    @allure.issue("https://www.cnblogs.com/wintest", name="點擊,跳轉到對應BUG的鏈接地址")
    @allure.testcase("https://www.cnblogs.com/wintest", name="點擊,跳轉到對應用例的鏈接地址")
    @allure.title(
        "測試數(shù)據(jù):【 {username},{password},{telephone},{sex},{address},{except_result},{except_code},{except_msg}】")
    @pytest.mark.single
    @pytest.mark.parametrize("username, password, telephone, sex, address, except_result, except_code, except_msg",
                             api_data["test_register_user"])
    @pytest.mark.usefixtures("delete_register_user")
    def test_delete_user(self, login_fixture, username, except_result, except_code, except_msg):

測試報告效果展示

在命令行執(zhí)行命令:pytest 運行用例后,會得到一個測試報告的原始文件,但這個時候還不能打開成HTML的報告,還需要在項目根目錄下,執(zhí)行命令啟動 allure 服務:

# 需要提前配置allure環(huán)境,才可以直接使用命令行
allure serve ./report`
下面是我整理的2023年最全的軟件測試工程師學習知識架構體系圖

一、Python編程入門到精通

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

二、接口自動化項目實戰(zhàn)

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

三、Web自動化項目實戰(zhàn)

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

四、App自動化項目實戰(zhàn)

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

五、一線大廠簡歷

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

六、測試開發(fā)DevOps體系

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

七、常用自動化測試工具

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

八、JMeter性能測試

接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細),軟件測試,接口自動化,自動化測試,軟件測試,軟件測試工程師,自動化測試,接口自動化測試,接口自動化,python自動化測試,測試開發(fā)

九、總結(尾部小驚喜)

在追逐夢想的路上,不要畏懼困難與挫折,堅持不懈地奮斗,只有拼搏,才能超越自我,創(chuàng)造屬于自己的輝煌。相信自己的能力,勇往直前,每一次努力都是一次進步,每一次奮斗都是一次成長。

不論前路多么艱難,只要你心懷夢想,勇往直前,堅持不懈地奮斗,就能超越自我,創(chuàng)造屬于自己的輝煌。相信自己的能力,勇敢追求,每一次努力都是一次進步,每一次奮斗都是一次蛻變。

每個人都有屬于自己的光芒,只要努力奮斗,勇敢面對困難,堅持追求,就能綻放璀璨,實現(xiàn)夢想,讓生命在奮斗中閃耀出絢麗的色彩。文章來源地址http://www.zghlxwxcb.cn/news/detail-607825.html

到了這里,關于接口自動化測試-Python+Requests+Pytest+YAML+Allure配套擼碼(詳細)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

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

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

    接口自動化框架:Python+Requests+Pytest+YAML+Allure 通過 Python+Requests 來發(fā)送和處理HTTP協(xié)議的請求接口,使用 Pytest 作為測試執(zhí)行器,使用 YAML 來管理測試數(shù)據(jù),使用 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)
  • Python+Requests+Pytest+YAML+Allure實現(xiàn)接口自動化

    Python+Requests+Pytest+YAML+Allure實現(xiàn)接口自動化

    本項目實現(xiàn)接口自動化的技術選型:Python+Requests+Pytest+YAML+Allure ,主要是針對之前開發(fā)的一個接口項目來進行學習,通過 Python+Requests 來發(fā)送和處理HTTP協(xié)議的請求接口,使用 Pytest 作為測試執(zhí)行器,使用 YAML 來管理測試數(shù)據(jù),使用 Allure 來生成測試報告 本項目在實現(xiàn)過程中,把

    2024年02月11日
    瀏覽(791)
  • Python+requests+pytest+allure封裝接口自動化1-項目結構目錄創(chuàng)建,requests庫封裝

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

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

    2024年02月12日
    瀏覽(120)
  • pytest+requests+Python3.7+yaml+Allure+Jenkins+docker實現(xiàn)接口自動化

    pytest+requests+Python3.7+yaml+Allure+Jenkins+docker實現(xiàn)接口自動化

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

    2024年02月09日
    瀏覽(699)
  • Python+Requests實現(xiàn)接口自動化測試

    Python+Requests實現(xiàn)接口自動化測試

    一般對于自動化的理解,有兩種方式的自動化。 第一,不需要寫代碼,完全由工具實現(xiàn),這種方式的工具一般是公司自己研發(fā)的,方便黑盒測試人員使用。這種工具的特點是學習成本低,方便使用,但是通用性不強,也就是換了一家公司,就很有可能無法使用之前的工具。

    2024年01月16日
    瀏覽(22)
  • python3+requests+unittest接口自動化測試

    python3+requests+unittest接口自動化測試

    python3 + pycharm編輯器 (該套代碼只是簡單入門,有興趣的可以不斷后期完善) (1)run.py主運行文件,運行之后可以生成相應的測試報告,并以郵件形式發(fā)送; (2)report文件夾存放測試結果報告; (3)unit_test文件夾是存放測試用例(demo.py和test_unittest.py用例用法介紹,實際

    2024年02月09日
    瀏覽(26)
  • python接口自動化測試 requests庫的基礎使用

    python接口自動化測試 requests庫的基礎使用

    目錄 簡單介紹 Get請求 Post請求 其他類型請求 自定義headers和cookies SSL 證書驗證 響應內容 獲取header 獲取cookies requests庫簡單易用的HTTP庫 ? 格式: ?requests.get(url)? 注意: 若需要傳請求參數(shù),可直接在?url?最后的???后面,也可以調用?get()?時多加一個參數(shù)?params?,傳入請求

    2023年04月26日
    瀏覽(22)
  • python+pytest接口自動化(12)-自動化用例編寫思路 (使用pytest編寫一個測試腳本)

    python+pytest接口自動化(12)-自動化用例編寫思路 (使用pytest編寫一個測試腳本)

    經(jīng)過之前的學習鋪墊,我們嘗試著利用pytest框架編寫一條接口自動化測試用例,來厘清接口自動化用例編寫的思路。 我們在百度搜索 天氣查詢 ,會出現(xiàn)如下圖所示結果: 接下來,我們以該天氣查詢接口為例,編寫接口測試用例腳本。 針對某個功能做接口測試,首先我們需

    2024年02月04日
    瀏覽(30)
  • python pytest 最簡單的接口自動化測試框架

    最近由于工作的原因,需要開發(fā)一個接口自動化測試框架,使用pytest框架、數(shù)據(jù)驅動,并展示直觀的測試報告。 具體的開發(fā)過程如下: 安裝必要的庫: pytest:用于編寫和運行測試用例。 requests:用于發(fā)送 HTTP 請求。 pytest-html:用于生成 HTML 格式的測試報告。 可以使用以下命

    2024年03月19日
    瀏覽(46)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包