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

自動化測試框架pytest系列之8個常用的裝飾器函數(shù)

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

自動化測試框架pytest系列之基礎概念介紹(一)-CSDN博客??

自動化測試框架pytest系列之21個命令行參數(shù)介紹(二)-CSDN博客

自動化測試框架pytest系列之強大的fixture功能,為什么fixture強大?一文拆解它的功能參數(shù)。(三)-CSDN博客

接上文?

3.5 pytest的8個裝飾器

在之前的文章可以看到,fixture本身就是以裝飾器的形式去使用的。但在pytest中,其實有很多的裝飾器函數(shù),接下來我們就捋一下有哪些裝飾器 。自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

?

如果你自己發(fā)現(xiàn) ,除了fixture本身 ,其他的都在mark后面進行標記 。所以這個mark非常重要 。

1.@pytest.fixture()

此功能應該是pytest中最核心和強大的功能 ,為了介紹此功能 ,本人足足寫了1.8w字 。具體可查看鏈接 :自動化測試框架pytest到底都有哪些實用功能 ?pytest系列文章之fixture的介紹(一)。 - 知乎 (zhihu.com)

2.@pytest.mark.usefixtures()

  • 功能 :可以在測試用例中引入fixture的功能 ,

  • 格式 :@pytest.mark.usefixtures("fixture函數(shù)名"),其中參數(shù)必須傳遞fixture的函數(shù)名字 ,而且要用引號引起來 。

  • 區(qū)別 :和fixture()傳遞給測試用例的區(qū)別是 :

    • fixture:既可以將返回值傳給測試用例,也可以無任何返回值,比如像上面的打印語句,本身不返回任何信息。

    • usefixture :無法將返回值的函數(shù)傳遞給測試用例 ,即測試用例只能接受無返回值的usefixture 。

  • 需求 :給登錄的每條測試用例中添加一個打印信息,具體如下:


import pytest
from package_pytest.login import login


# fixture
@pytest.fixture()
def demo_fixture():
    print("這是一個fixture,要在每個方法執(zhí)行前先運行")


# case1 : 輸入正確的用戶名和正確的密碼進行登錄
@pytest.mark.usefixtures('demo_fixture')
def test_login_success():
    print("1")
    expect_result = 0
    actual_result = login('admin','123456').get('code')
    assert expect_result == actual_result


# case2 : 輸入正確的用戶名和錯誤的密碼進行登錄
@pytest.mark.usefixtures('demo_fixture')
def test_password_is_wrong():
    print("2")
    expect_reesult = 3
    actual_result = login('admin','1234567').get('code')
    assert expect_reesult == actual_result


# case3 : 輸入用戶名和空的密碼進行登錄
@pytest.mark.usefixtures('demo_fixture')
def test_password_is_null():
    print("3")
    expect_reesult = 2
    actual_result = login('admin', '').get('code')
    assert expect_reesult == actual_result


if __name__ == '__main__':
    pytest.main(['test12_login_usefixtrues.py','-sv'])
  • 說明 :

    1. 定義了一個demo_fixture函數(shù) ,其中這個函數(shù)想被測試用例調用 。

    2. 在調用的測試用例前加上@pytest.mark.usefixtures('demo_fixture') ,相當于把fixture函數(shù)傳遞給了測試用例了 。

    3. 所以 ,在測試用例運行就會先執(zhí)行fixture函數(shù)內的代碼了 。

以上代碼運行結果為 :自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

3.@pytest.mark.parametrize

  • 功能 :可以專門為某條測試用例進行參數(shù)化 ,

  • 格式 :@pytest.mark.parametrize(參數(shù),列表) ,其中參數(shù)主要為了傳遞給測試用例使用的,它接受的是字符串類型 。而列表是用來接收測試數(shù)據(jù)的。

  • 需求 :要將登錄的4條測試數(shù)據(jù)傳入給登錄測試用來,該如何做 ,使用parametrize代碼實現(xiàn)為 :

import pytest
from package_pytest.login import login

cases = [(0,'admin','123456'),(3,'admin','1234567'),(2,'admin',''),(1,'','123456')]


# case: 登錄測試用例
@pytest.mark.parametrize("expect_result,username,password",cases)
def test_login_success(expect_result,username,password):
    print("1")
    actual_result = login(username,password).get('code')
    assert expect_result == actual_result

?對以上代碼的說明 : 自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

運行結果如下 : ?自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

4.@pytest.mark.標識符

  • 功能 :可以做回歸測試或者打包測試套件

  • 格式 :@pytest.mark.標識符 ,其中標識符可以是任何字符。

  • 說明:在測試用例中,我們經(jīng)常通過用例級別代表用例的重要程度 ,比如會把用例設置為p1 , p2 ,p3 ,p4 .而在pytest中就可以mark進行標記 。

  • 需求 :對登錄成功的用例標記為p1 ,對登錄失敗的用例標記為p2 ,具體代碼如下 :

# case1 : 輸入正確的用戶名和正確的密碼進行登錄
@pytest.mark.p1
def test_login_success():
    print("1")
    expect_result = 0
    actual_result = login('admin','123456').get('code')
    assert expect_result == actual_result


# case2 : 輸入正確的用戶名和錯誤的密碼進行登錄
@pytest.mark.p2
def test_password_is_wrong():
    print("2")
    expect_reesult = 3
    actual_result = login('admin','1234567').get('code')
    assert expect_reesult == actual_result


# case3 : 輸入用戶名和空的密碼進行登錄
@pytest.mark.p2
def test_password_is_null():
    print("3")
    expect_reesult = 2
    actual_result = login('admin', '').get('code')
    assert expect_reesult == actual_result
    

if __name__ == '__main__':
    pytest.main(['test08_login_mark.py','-sv','-m','p1'])

可以看到 ,我們在main函數(shù)中傳入了-mp1 ,就代表只運行mark中標記為p1級別的用例 ,這樣就實現(xiàn)了部分用例的執(zhí)行。

運行結果如下 :

自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

5.@pytest.mark.skip

  • 功能 :用例跳過,比如某條用例暫時失敗了,但是找不到原因 ,可以先標記為跳過 。

  • 格式 :@pytest.mark.skip(reason) ,這里的reason就是跳過的原因

  • 需求 :對登錄成功的用例標記為跳過,在執(zhí)行的時候不運行 ,具體代碼如下 :


import pytest
from package_pytest.login import login


# case1 : 輸入正確的用戶名和正確的密碼進行登錄
@pytest.mark.skip(reason="用例運行失敗,暫時找不到失敗原因,跳過該用例執(zhí)行。")
def test_login_success():
    print("1")
    expect_result = 0
    actual_result = login('admin','123456').get('code')
    assert expect_result == actual_result


# case2 : 輸入正確的用戶名和錯誤的密碼進行登錄
@pytest.mark.p2
def test_password_is_wrong():
    print("2")
    expect_reesult = 3
    actual_result = login('admin','1234567').get('code')
    assert expect_reesult == actual_result


# case3 : 輸入用戶名和空的密碼進行登錄
@pytest.mark.p2
def test_password_is_null():
    print("3")
    expect_reesult = 2
    actual_result = login('admin', '').get('code')
    assert expect_reesult == actual_result


if __name__ == '__main__':
    pytest.main(['test09_login_skip.py','-sv'])

?運行代碼如下 : 自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

6.@pytest.mark.skipif

  • 功能 :選擇性跳過用例,條件為True才會跳過 。

  • 格式 :@pytest.mark.skipif(表達式) ,這里只能做一些簡單的判斷。

  • 說明 :和skip相比 ,只要標記為skip,此用例就會跳過,而標記為skipif的話,這里有個判斷,只有為ture的情況下才會跳過 。

  • 需求 :對登錄成功的用例標記選擇性跳過,符合條件的將跳過該用例 ,具體代碼如下 :

import pytest
from package_pytest.login import login
import sys


# case1 : 輸入正確的用戶名和正確的密碼進行登錄
@pytest.mark.skipif(sys.platform == "win32",reason="是windows平臺的跳過")
def test_login_success():
    print("1")
    expect_result = 0
    actual_result = login('admin','123456').get('code')
    assert expect_result == actual_result


# case2 : 輸入正確的用戶名和錯誤的密碼進行登錄
@pytest.mark.skipif(sys.version_info <(3,6),reason="低于3.6版本的跳過")
def test_password_is_wrong():
    print("2")
    expect_reesult = 3
    actual_result = login('admin','1234567').get('code')
    assert expect_reesult == actual_result


# case3 : 輸入用戶名和空的密碼進行登錄
@pytest.mark.skipif(sys.version_info >=(3,6),reason="大于等于3.6版本的跳過")
def test_password_is_null():
    print("3")
    expect_reesult = 2
    actual_result = login('admin', '').get('code')
    assert expect_reesult == actual_result


if __name__ == '__main__':
    pytest.main(['test10_login_skipif.py','-sv'])

因為我的Python版本是3.6.4 ,故第二條用例不會被跳過,運行結果如下 : 自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

7.@pytest.mark.xfail

  • 功能 :標記為失敗用例,表示期望這個用例執(zhí)行失敗。

  • 格式 :@pytest.mark.xfail(表達式,reason) ,表達式為True,標記為失敗用例。

  • 說明 :和skipif相比,skipif表達式為真,跳過用例執(zhí)行,而標記xfail的話,表達式為真,則標記為失敗 。

  • 需求 :對登錄用例中符合條件的都標記為失敗用例 ,具體代碼如下 :


import pytest
from package_pytest.login import login
import sys


# case1 : 輸入正確的用戶名和正確的密碼進行登錄
@pytest.mark.xfail(sys.platform == "win32",reason="是windows平臺的跳過")
def test_login_success():
    print("1")
    expect_result = 0
    actual_result = login('admin','123456').get('code')
    assert expect_result == actual_result


# case2 : 輸入正確的用戶名和錯誤的密碼進行登錄
@pytest.mark.xfail(sys.version_info <(3,6),reason="低于3.6版本的標記為失敗")
def test_password_is_wrong():
    print("2")
    expect_reesult = 3
    actual_result = login('admin','1234567').get('code')
    assert expect_reesult == actual_result


# case3 : 輸入用戶名和空的密碼進行登錄
@pytest.mark.xfail(sys.version_info >=(3,6),reason="大于等于3.6版本的標記為什么")
def test_password_is_null():
    print("3")
    expect_reesult = 20
    actual_result = login('admin', '').get('code')
    assert expect_reesult == actual_result


if __name__ == '__main__':
    pytest.main(['test11_login_xfail.py','-sv'])

?運行結果如下 : 自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

以上是正常的運行結果 ,如果你只想運行失敗的用例,你可以加入該選項'--runxfail' . ?

if __name__ == '__main__':
    pytest.main(['test11_login_xfail.py','-sv','--runxfail'])

?運行以上命令,那么這條用例就會像斷言失敗的用例輸出 。 自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

8.@pytest.mark.run

  • 功能 :控制用例的運行順序 ,但它需要下載插件pytest-ordering .

  • 格式 :@pytest.mark.run(order=n) ,其中n代表一個數(shù)字 ,數(shù)字越小,代表執(zhí)行順序越靠前 ,反之數(shù)字越大,越靠后。

  • 需求 :給登錄的測試用例標記不同的順序 ,具體如下:自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化

?運行結果如下 : 自動化測試框架pytest系列之8個常用的裝飾器函數(shù),接口自動化,接口測試,python,python,單元測試,自動化文章來源地址http://www.zghlxwxcb.cn/news/detail-787022.html

到了這里,關于自動化測試框架pytest系列之8個常用的裝飾器函數(shù)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

  • 從0到1精通自動化測試,pytest自動化測試框架,doctest測試框架(十四)

    從0到1精通自動化測試,pytest自動化測試框架,doctest測試框架(十四)

    doctest從字面意思上看,那就是文檔測試。doctest是python里面自帶的一個模塊,它實際上是單元測試的一種。 官方解釋:doctest 模塊會搜索那些看起來像交互式會話的 Python 代碼片段,然后嘗試執(zhí)行并驗證結果 doctest測試用例可以放在兩個地方 函數(shù)或者方法下的注釋里面 模塊的

    2024年02月11日
    瀏覽(91)
  • 從0到1精通自動化測試,pytest自動化測試框架,配置文件pytest.ini(十三)

    從0到1精通自動化測試,pytest自動化測試框架,配置文件pytest.ini(十三)

    pytest配置文件可以改變pytest的運行方式,它是一個固定的文件pytest.ini文件,讀取配置信息,按指定的方式去運行 pytest里面有些文件是非test文件 pytest.ini pytest的主配置文件,可以改變pytest的默認行為 conftest.py 測試用例的一些fixture配置 _init_.py 識別該文件夾為python的package包

    2024年02月11日
    瀏覽(456)
  • 自動化測試框架 —— pytest框架入門篇

    今天就給大家說一說pytest框架。 今天這篇文章呢,會從以下幾個方面來介紹: 1、首先介紹一下pytest框架 2、帶大家安裝Pytest框架 3、使用pytest框架時需要注意的點 4、pytest的運行方式 5、pytest框架中常用的插件 pytest 是 python 的第三方單元測試框架,比自帶 unittest 更簡潔和高效

    2024年02月03日
    瀏覽(97)
  • pytest接口測試自動化框架

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

    2024年02月06日
    瀏覽(100)
  • 【自動化測試教程】 —— pytest 框架詳解 ~

    【自動化測試教程】 —— pytest 框架詳解 ~

    特點: 容易上手, 入門簡單, 文檔豐富, 文檔中有很多參考案例 支持簡單的單元測試和復雜的功能測試 支持參數(shù)化 執(zhí)行測試用例過程中, 支持跳過操作 支持重復失敗的case 支持運行Nose, unittest編寫測試用例 pytest支持很多第三方插件 方便和持續(xù)集成工具集成 斷言方法: assert res

    2024年02月12日
    瀏覽(103)
  • Selenium+Pytest自動化測試框架

    Selenium+Pytest自動化測試框架

    selenium自動化+ pytest測試框架 本章你需要 一定的python基礎——至少明白類與對象,封裝繼承 一定的selenium基礎——本篇不講selenium,不會的可以自己去看selenium中文翻譯網(wǎng) 測試框架有什么優(yōu)點呢: 代碼復用率高,如果不使用框架的話,代碼會很冗余 可以組裝日志、報告、郵件

    2024年02月07日
    瀏覽(87)
  • Selenium+Pytest自動化測試框架詳解

    Selenium+Pytest自動化測試框架詳解

    selenium自動化+ pytest測試框架 本章你需要 一定的python基礎——至少明白類與對象,封裝繼承; 一定的selenium基礎——本篇不講selenium,不會的可以自己去看selenium中文翻譯網(wǎng) 測試框架有什么優(yōu)點 代碼復用率高,如果不使用框架的話,代碼會很冗余 可以組裝日志、報告、郵件等

    2024年02月08日
    瀏覽(25)
  • 引入成熟的Pytest自動化測試框架

    引入成熟的Pytest自動化測試框架

    雖然我們能使用腳本編寫自動化測試框架,但沒有必要重復找車輪子, 引入成熟的自動化測試框架 即可, Pytest是目前最成熟、功能最全面的Python測試框架之一 ,簡單靈活、易于上手,可完全兼容其他測試框架如unitest,支持參數(shù)化和測試編排功能,擴展性強。 1、安裝Pytes

    2024年02月20日
    瀏覽(16)
  • Pytest自動化測試框架之Allure報告

    Pytest自動化測試框架之Allure報告

    Allure?Framework是一種靈活的、輕量級、多語言測試報告工具。 不僅可以以簡潔的網(wǎng)絡報告形式非常簡潔地顯示已測試的內容, 而且還允許參與開發(fā)過程的每個人從日常執(zhí)行中提取最大程度的有用信息和測試。 從開發(fā)/測試的角度來看: Allure報告可以快速查看到缺陷點,可以將

    2024年02月06日
    瀏覽(290)
  • Selenium + Pytest自動化測試框架實戰(zhàn)(上)

    Selenium + Pytest自動化測試框架實戰(zhàn)(上)

    今天呢筆者想和大家來聊聊selenium自動化+ pytest測試框架,在這篇文章里你需要知道一定的python基礎——至少明白類與對象,封裝繼承;一定的selenium基礎。這篇文章不會selenium,不會的可以自己去看selenium中文翻譯網(wǎng)喲。 測試框架有什么優(yōu)點呢 : 代碼復用率高,如果不使用框

    2024年04月27日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包