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

自動化測試(三):接口自動化pytest測試框架

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

1. 接口自動化的實現(xiàn)

API:Application Programming Interface
接口自動化按照自動化的工具可分為

基于接口測試工具的接口自動化

  • eg1:Postman+Newman+git/Svn+Jenkins(基于Javascript語言)接口自動化

Postman:創(chuàng)建和發(fā)送 API 請求,并對響應進行斷言和驗證。
Newman: Postman 的命令行工具,它允許測試人員在沒有界面的情況下運行 Postman 集合。常用于在 CI/CD 流程中自動化運行 API 測試。
Git:版本控制工具
Jenkins:CI/CD 流程中用于自動化構(gòu)建、測試和部署應用程序。可以設置定期或事件觸發(fā)的構(gòu)建任務,將 Postman 集合和 Newman 集成到自動化測試流程中。
持續(xù)集成(Continuous Integration)和持續(xù)交付(Continuous Delivery): CI在每次代碼提交時自動觸發(fā)構(gòu)建和測試過程,CD自動將構(gòu)建通過多個環(huán)境(如開發(fā)、測試、預生產(chǎn))傳遞到生產(chǎn)環(huán)境以確保軟件隨時可以被部署到生產(chǎn)環(huán)境。

  • eg2:Jmeter+Ant+Git/Svn+Jenkins(基于Java和BeanShell語言)接口自動化

JMeter:性能測試工具,可模擬多種負載和場景,以測試 API 的性能和可靠性。
Ant:用于自動構(gòu)建和部署 Java 項目的構(gòu)建工具。它可以用來執(zhí)行 JMeter 測試計劃并生成測試報告。

基于代碼的接口自動化(本質(zhì)是輕量型的框架)

  • Python為主(復雜腳本比Java簡單),常用第三方庫

Requests:與 API 和網(wǎng)絡服務的交互
PyYAML :在 Python 中解析和生成 YAML 數(shù)據(jù)。YAML 是一種輕量級的數(shù)據(jù)序列化格式,常用于配置文件和數(shù)據(jù)交換。

XML&Json&YAML:在作為配置文件的時候,這三種格式都很常用;在數(shù)據(jù)傳輸?shù)臅r候, XML和JSON很常見, 尤其是JSON,在API的開發(fā)中現(xiàn)在變得越來越普及;從文件大小上來說, 同樣的數(shù)據(jù)集。YAML文件最小, JSON次之,XML最大。

pytest:pytest 是 Python 中廣泛使用的測試框架,使編寫測試用例更加便捷。
Allure:allure-pytest 是 pytest 的插件,用于生成詳細且吸引人的測試報告,與 Allure 測試報告框架集成。
logging:logging 是 Python 內(nèi)置的日志模塊,用于記錄應用程序運行時的消息,方便調(diào)試和監(jiān)控。

基于平臺的接口自動化:測試開發(fā)。

平臺能夠跟進產(chǎn)品序列

本接口自動化及pytest測試實踐屬于代碼自動化

2. 知識要點及實踐

2.1 requests.post傳遞的參數(shù)本質(zhì)

body
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試
Response對象:
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試

2.2 pytest單元測試框架

默認測試用例規(guī)則:

  1. 模塊名(,py文件)以test_開頭或者_test結(jié)尾
  2. 類名必須Test開頭
  3. 用例名必須以test_開頭

??采用自動化測試(一)的Google翻譯爬蟲接口的一個小案例,比如:
??測試庫名test_Google_tran
??測試模塊名test_Tran_API.py
??測試類名TestAPI
??測試用例名test_post_message
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試

2.2.1 pytest框架簡介

框架作用:

  1. 發(fā)現(xiàn)用例:根據(jù)pytest框架默認的規(guī)則去發(fā)現(xiàn)并且加載測試用例
  2. 執(zhí)行用例:將測試用例按照一定的順序和條件執(zhí)行并生成結(jié)果
  3. 判斷結(jié)果:通過斷言來判斷實際結(jié)果和預測結(jié)果是否相同
  4. 生成報告:統(tǒng)計測試進度、耗時、通過率,生成報告。

PS:可以和很多工具,比如selenium,appium等結(jié)合使用,可以使用很多插件,比如allure。

插件舉例 (插件本質(zhì)也是第三方庫):

  • allure-pytest:生成allure報告
  • pytest-cov:用于代碼覆蓋率分析。生成代碼覆蓋率報告,幫助了解測試覆蓋的情況。
  • pytest-html:生成漂亮的 HTML 格式測試報告,包括測試結(jié)果、用例名稱、時間等信息,方便查看和分享。
  • pytest-xdist:允許并行運行測試,多線程加速測試過程。適用于擁有多個 CPU 核心的機器。
  • pytest-ordering:標記測試用例的執(zhí)行順序
  • pytest-selenium:支持使用 Selenium 進行 Web UI 測試。
  • pytest-returnfailers:失敗用例重跑
  • pytest-base-url:管理基礎路徑

框架結(jié)構(gòu):(命名規(guī)則影響到框架檢索)
LearningAutoTesting/
? ?|- common/ --封裝庫名
? ?| ? ?|- api.py
? ?| ? ?|- …
? ?|- testcase/ --測試庫名
? ?| ? ?|- test_api.py --測試模塊名
? ?| ? ?|- …
? ?|- run.py --測試用例運行
? ?|- conftest.py --全局測試配置
? ?|- requirements.txt --依賴名

用例的執(zhí)行
可以直接運行run.py:pytest.main([‘–capture=sys’])
可以在LearningAutoTesting路徑下用命令行pytest -vs

??注意pytest.ini配置文件,框架會自動檢索并用于配置pytest 運行測試時的一些參數(shù)和選項。pytest.ini 文件為整個項目設置一致的默認配置,提高了可維護性和可讀性。下面是配置文件常用內(nèi)容舉例:
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試

執(zhí)行測試用例前后的操作:

方法一:同unittest
??在 pytest 中,用于在測試用例執(zhí)行前后執(zhí)行操作的關(guān)鍵字是 setup 和 teardown,但是在 pytest 中,更推薦使用 setup 和 teardown 的變種,即 setup_method 和 teardown_method。

setup_method:在每個測試方法(測試用例)執(zhí)行前都會調(diào)用。適用于需要在每個測試之前執(zhí)行初始化操作的情況。
teardown_method:在每個測試方法執(zhí)行后都會調(diào)用。適用于需要在每個測試之后執(zhí)行清理操作的情況。
setup_class :在整個測試類的生命周期中只會執(zhí)行一次,不同于 setup_method。

方法二:采用fixture固件,靈活設置方法的前后操作。

Python 中的裝飾器是一種特殊的語法和功能,用于修改或增強函數(shù)或類的行為。裝飾器可以在不修改原始函數(shù)或類代碼的情況下,對它們進行功能性的擴展、修改或包裝。裝飾器通常是函數(shù),它接受一個函數(shù)或類作為參數(shù),并返回一個新的函數(shù)或類。

def count_calls(func):
    def wrapper(*args, **kwargs):
        wrapper.call_count += 1
        print(f"Function {func.__name__} has been called {wrapper.call_count} times.")
        return func(*args, **kwargs)
    wrapper.call_count = 0
    return wrapper

@count_calls
def my_function():
    print("Hello, world!")

my_function()

輸出:

Function my_function has been called 1 times.
Hello, world!
Function my_function has been called 2 times.
Hello, world!

@pytest.fixture:用于定義固件或者叫夾具(fixture),固件是一種可以在測試用例中重復使用的資源或數(shù)據(jù),例如數(shù)據(jù)庫連接、臨時文件、模擬對象等。它可以用來隨心所欲的設置前后置操作。
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試
裝飾器用法,調(diào)整這5個參數(shù)進行使用。作用域一般是函數(shù)級別或者會話級別。

fixture的手動調(diào)用:在test_case(self,固件名)

自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試
其中yeild是一個生成器??梢杂脕韨鬟f返回值

當一個函數(shù)中包含了 yield 關(guān)鍵字時,它就變成了一個生成器函數(shù)。生成器函數(shù)可以被調(diào)用,但不會立即執(zhí)行,而是返回一個生成器對象。每次調(diào)用生成器對象的 next() 方法(或使用 next() 函數(shù))時,函數(shù)會執(zhí)行直到遇到 yield,然后產(chǎn)生一個值并暫停。下次調(diào)用時,函數(shù)從上次暫停的地方繼續(xù)執(zhí)行,直到再次遇到 yield 或函數(shù)結(jié)束。

自動調(diào)用: 如果只有autouse參數(shù)為true,則同setup_作用域。

固件傳參:數(shù)據(jù)驅(qū)動,可以通過參數(shù)化來實現(xiàn)一種類似于迭代的行為。當您使用 params 參數(shù)來傳遞多個參數(shù)時,fixture 將會為每組參數(shù)運行一次測試函數(shù),并在每次測試運行時提供不同的準備工作。
自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試

2.2.2 pytest裝飾器

@pytest.fixture:用于定義夾具(fixture),夾具是一種可以在測試用例中重復使用的資源或數(shù)據(jù),例如數(shù)據(jù)庫連接、臨時文件、模擬對象等。

對固件驅(qū)動。1. 主要用于準備測試所需的數(shù)據(jù)、對象、環(huán)境等,并在測試結(jié)束后進行清理操作,以確保測試之間不會相互影響。2. 通過將常見的測試準備和清理邏輯封裝到 fixture 中,您可以在多個測試用例中重復使用,從而避免重復編寫相同的代碼。3. fixture 可以用于管理外部資源,如數(shù)據(jù)庫連接、文件句柄等,以確保資源在測試完成后被釋放。

@pytest.mark.parametrize:用于參數(shù)化測試,允許你通過多個參數(shù)組合運行同一個測試用例,以減少重復的測試代碼。

對數(shù)據(jù)驅(qū)動:@pytest.mark.parametrize(參數(shù)名,參數(shù)值-列表或者元組),數(shù)據(jù)中有多少值就會執(zhí)行多少次。用于在一個測試用例中多次運行,每次使用不同的參數(shù),即使用不同的輸入數(shù)據(jù)運行相同的測試邏輯

自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試

@pytest.mark.skip@pytest.mark.skipif:用于跳過指定的測試用例,前者是無條件跳過,后者可以根據(jù)條件來決定是否跳過。

@pytest.mark.xfail:用于標記預期失敗的測試用例,即使測試用例失敗了,也不會導致整個測試過程失敗。

@pytest.mark.parametrize:用于參數(shù)化測試,讓你可以為測試用例指定多組參數(shù),使得同一個測試用例可以多次運行。

@pytest.mark.timeout:用于為測試用例設置最大運行時間,如果測試用例運行時間超過指定時間,將會被中斷。

@pytest.mark.parametrize:用于將標記應用于測試用例,例如自定義標記,用于組織測試用例。

@pytest.mark.usefixtures:用于在測試函數(shù)中自動使用指定的夾具,不需要在參數(shù)列表中指定。

@pytest.mark.filterwarnings:用于過濾特定類型的警告,以便在測試運行期間不顯示特定的警告信息。

@pytest.mark.raises:用于斷言某個異常被正確地引發(fā),用于測試代碼中是否拋出了預期的異常。

2.2.3 斷言、allure測試報告

??還需要安裝allure,才能通過os模塊調(diào)用,這里僅放一個基礎使用例子,在該系列的后續(xù)文章**自動化測試(四)**中細講。

2.2.4 接口關(guān)聯(lián)、封裝改進

接口關(guān)聯(lián)場景:在測試中,一個系統(tǒng)通常會被分解成多個子系統(tǒng)或模塊,這些子系統(tǒng)之間需要通過接口進行數(shù)據(jù)傳遞和交互。比如test1中驗證了能夠獲得tokens,test2需要使用test1的tokens。

方法一:對于流水線測試,中間數(shù)據(jù)傳輸比較少的話,可以在 pytest 的 fixture 中使用 yield 語句來在 fixture 的生命周期內(nèi)傳遞參數(shù),并確保 yield 生成的數(shù)據(jù)被另外一個測試用例以函數(shù)名稱傳輸?shù)姆绞讲东@。
方法二:用文件、數(shù)據(jù)庫保存,常用yaml文件。用文件或者數(shù)據(jù)庫統(tǒng)一管理中間變量。
common\yaml_uitl.py文件

# 提前構(gòu)建一個yaml文件
import yaml
import os

def read_yaml(key):
    # 使用 with 會自動管理文件的打開和關(guān)閉
    with open(os.getcwd() + "/extract.yaml", encoding="utf-8") as f:
        value = yaml.load(stream=f, Loader=yaml.FullLoader)  # 自動將yaml結(jié)構(gòu)體
        print(value)
        return value[key]


def write_yaml(data):
    # 理論上還需要檢測yaml中是否已經(jīng)存在對應的數(shù)據(jù),如果存在需要改mode
    with open(os.getcwd() + "/extract.yaml", encoding="utf-8", mode='a') as f:
        yaml.dump(data, stream=f, allow_unicode=True)


if __name__ == "__main__":
    print(read_yaml("employee"))
    write_yaml({"employer": {"name": "Jerry"}})
    print(read_yaml("employer"))

自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試
一般在conftest文件中設置clear_yaml函數(shù)。接口關(guān)聯(lián)時使用yaml_util直接寫入、讀取json數(shù)據(jù)即可。

YAML 文件人類易讀性比Json好,可以和json之間靈活轉(zhuǎn)換(load后就是json格式)

  1. 編寫配置文件
  2. 測試用例接口關(guān)聯(lián)
# 特殊字符可以使用單引號或雙引號括起來

employee:
  name: Mark
  age: 28
  status: null  # 空值可以表示為 null 或 ~
  projects:
    - Project A  # - 表示列表中的元素
    - Project B
  contact: # 聯(lián)系方式
    email: mark@example.com
    phone: 123-456-7890
  description: |   # | 表示多行字符串
    This is a multiline
    string with preserved line breaks.employer:
employer:
  name: Jerry

YAML動態(tài)傳參(熱加載)

熱加載:讓YAML能夠調(diào)用外部函數(shù)
方法:${fuction_name(parms)}

2.3 pytest接口封裝(統(tǒng)一請求封裝)

?將數(shù)量很多的用例封裝為一個方法。場景:

  1. 統(tǒng)計數(shù)據(jù)
  2. 異常處理
  3. 日志監(jiān)控

eg1:以處理數(shù)據(jù)為例,將待翻譯的內(nèi)容封裝成GoogleTranslate.py中的google_translator類。

eg2:以日志監(jiān)控為例,封裝后在SendRequest類方法中打印日志即可,因為所有的用例中都會調(diào)用SendRequest類方法。同時自建的類只初始化一次session對象(能夠自動關(guān)聯(lián)cookie,所有請求都在一個通話里面),而google_translator類with requests.Session() as s,或者request方法源碼也是先from . import sessions然后with sessions.Session() as session,cookie都只用了一次

為什么可以requests.Session(),而不需要requests.sessions.Session()?
??requests 庫在設計時采用了適當?shù)哪K導入機制和命名空間。這樣的設計使得庫的使用更加便捷和一致。當你使用 import requests 導入 requests 模塊時,你實際上導入了 requests 包中的 init.py 模塊。然后,requests 包內(nèi)的各個子模塊和類都會在 requests 命名空間下變得可用。

自動化測試(三):接口自動化pytest測試框架,自動化測試,python,單元測試

參考

b站2023年課程p1-p9文章來源地址http://www.zghlxwxcb.cn/news/detail-692045.html

到了這里,關(guān)于自動化測試(三):接口自動化pytest測試框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 自動化測試(三):接口自動化pytest測試框架

    自動化測試(三):接口自動化pytest測試框架

    API:Application Programming Interface 接口自動化按照自動化的工具可分為 基于 接口測試工具 的接口自動化 eg1:Postman+Newman+git/Svn+Jenkins(基于Javascript語言)接口自動化 Postman :創(chuàng)建和發(fā)送 API 請求,并對響應進行斷言和驗證。 Newman : Postman 的命令行工具,它允許測試人員在沒有界

    2024年02月10日
    瀏覽(93)
  • 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接口測試自動化框架

    目錄 pytest簡介及安裝 pytest的使用規(guī)則 pytest運行方式 主函數(shù)方式 命令行方式 跳過、標記及預期失敗特殊場景處理 pytest前后置、夾具 pytest高級用法fixture pytest接口斷言 pytest結(jié)合allure-pytest生成allure測試報告 ????????談起用例管理框架:python中的unittest、pytest;java中的test

    2024年02月06日
    瀏覽(100)
  • 接口自動化測試實戰(zhàn)之pytest框架+allure講解

    接口自動化測試實戰(zhàn)之pytest框架+allure講解

    本文章主要會講解Python中pytest框架的講解,介紹什么是pytest、為何要測試、為何使用以及參考和擴展等等,話不多說,咱們直接進入主題喲。 pytest是一款單元測試框架,在編程過程中,單元主要指的是代碼中最小的組成部分,例如函數(shù)或類,在面向?qū)ο笾?,最小的單元就是?/p>

    2024年02月05日
    瀏覽(241)
  • 基于Pytest+Allure+Excel的接口自動化測試框架

    基于Pytest+Allure+Excel的接口自動化測試框架

    Allure 框架是一個靈活的、輕量級的、支持多語言的測試報告工具,它不僅以 Web 的方式展示了簡介的測試結(jié)果,而且允許參與開發(fā)過程的每個人可以從日常執(zhí)行的測試中,最大限度地提取有用信息。 Allure 是由 Java 語言開發(fā)的,支持 Pytest,JaveScript、PHP、Ruby 等。 從 DEV/QA 的角

    2024年02月09日
    瀏覽(29)
  • 接口自動化測試框架(pytest+allure+aiohttp+ 用例自動生成)

    近期準備優(yōu)先做接口測試的覆蓋,為此需要開發(fā)一個測試框架,經(jīng)過思考,這次依然想做點兒不一樣的東西。 接口測試是比較講究效率的,測試人員會希望很快能得到結(jié)果反饋,然而接口的數(shù)量一般都很多,而且會越來越多,所以提高執(zhí)行效率很有必要 接口測試的用例其實

    2024年02月07日
    瀏覽(23)
  • 接口自動化測試框架開發(fā)(pytest+allure+aiohttp+ 用例自動生成)

    接口自動化測試框架開發(fā)(pytest+allure+aiohttp+ 用例自動生成)

    近期準備優(yōu)先做接口測試的覆蓋,為此需要開發(fā)一個測試框架,經(jīng)過思考,這次依然想做點兒不一樣的東西。 接口測試是比較講究效率的,測試人員會希望很快能得到結(jié)果反饋,然而接口的數(shù)量一般都很多,而且會越來越多,所以提高執(zhí)行效率很有必要 接口測試的用例其實

    2024年01月23日
    瀏覽(22)
  • 接口自動化測試框架開發(fā) (pytest+allure+aiohttp+ 用例自動生成)

    目錄 前言: 第一部分(整個過程都要求是異步非阻塞的) 讀取 yaml 測試用例 http 請求測試接口 收集測試數(shù)據(jù) 第二部分 動態(tài)生成 pytest 認可的測試用例 后續(xù)(yml 測試文件自動生成) 前言: 開發(fā)一個接口自動化測試框架是一個很好的方式,可以提高測試效率和準確性。在這

    2024年02月16日
    瀏覽(49)
  • 接口自動化框架之python pytest-mark(三)

    在測試用例/測試類前面加上: @pytest.mark.標簽名, 打標記范圍:測試用例、測試類、模塊文件 在使用mark標簽之前要創(chuàng)建pytest.ini配置文件,同樣在運行的時候,‘-m’參數(shù)后邊也要標識分類標簽的名稱 1.創(chuàng)建測試代碼 2.配置文件:(注意:一定是pytest.ini) 3.執(zhí)行: 完整代碼

    2024年02月07日
    瀏覽(23)
  • python+pytest接口自動化(12)-自動化用例編寫思路 (使用pytest編寫一個測試腳本)

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

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

    2024年02月04日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包