主頁 > 知識(shí)庫 > 詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹

詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹

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

mark標(biāo)記

​在實(shí)際工作中,我們要寫的自動(dòng)化用例會(huì)比較多,也不會(huì)都放在一個(gè)py文件中,如果有幾十個(gè)py文件,上百個(gè)方法,而我們只想運(yùn)行當(dāng)中部分的用例時(shí)怎么辦?

​pytest提供了一個(gè)非常好用的mark功能,可以給測(cè)試用例打上各種各樣的標(biāo)簽,運(yùn)行用例時(shí)可以指定運(yùn)行某個(gè)標(biāo)簽。mark功能作用就是靈活的管理和運(yùn)行測(cè)試用例。

​標(biāo)簽既可以打到方法上,也可以打到類上,標(biāo)記的兩種方式:

  • 直接標(biāo)記類或方法或函數(shù):@pytest.mark.標(biāo)簽名
  • 類屬性:pytestmark = [pytest.mark.標(biāo)簽名, pytest.mark.標(biāo)簽名],需要注意的是屬性名稱是固定的
import pytest


@pytest.mark.beta	# 可以給類打標(biāo)簽
class TestLogin:	# 標(biāo)記類

    @pytest.mark.qc
    @pytest.mark.beta	# 也可以多個(gè)標(biāo)簽
    def test_login(self):	# 標(biāo)記方法
        pass

@pytest.mark.smoke		# 單個(gè)標(biāo)簽
def test_register():	# 標(biāo)記函數(shù)
        pass

class TestClass:
    # 加一個(gè) pytestmark的類屬性
    pytestmark = [pytest.mark.qc, pytest.mark.beta]	# 標(biāo)簽存放在一個(gè)列表

pytest.main()

注冊(cè)標(biāo)簽名

​我們要想運(yùn)行已經(jīng)打好標(biāo)記的函數(shù),還需要對(duì)標(biāo)簽名進(jìn)行注冊(cè),告訴pytest有哪些標(biāo)簽,如果不進(jìn)行注冊(cè)運(yùn)行時(shí)(pytest的高級(jí)版本)可能會(huì)報(bào)警告讓你進(jìn)行注冊(cè)。

​我們只需要在項(xiàng)目根目錄下創(chuàng)建一個(gè)pytest.ini文件,注意文件名是不可修改的,否則pytest會(huì)找不到。內(nèi)容格式如下:

# pytest.ini
# 只能修改=右邊的值
[pytest]	
python_files = demo_*.py	# 模塊名以demo_開頭
python_functions = demo_*	# 方法名以demo_開頭
python_classes = Demo*	# 類名名以Demo開頭

# 注冊(cè)標(biāo)簽
markers =
    qc
    beta
    smoke

運(yùn)行指定的標(biāo)簽

通過命令行執(zhí)行

​單個(gè)標(biāo)簽:pytest -m "標(biāo)簽名"(-m意思是執(zhí)行標(biāo)簽mark),不想執(zhí)行某個(gè)標(biāo)簽可以用not來取反,即pytest -m "not 標(biāo)簽名"

​多個(gè)標(biāo)簽:可以加上判斷,pytest -m "qc and beta" 或者 pytest -m "qc or beta" 效果是一樣的

​注意:標(biāo)簽名一定要加雙引號(hào),單引號(hào)是會(huì)報(bào)錯(cuò)的。

通過代碼執(zhí)行

​這里普及一下,main()方法是可以接收不定長(zhǎng)參數(shù)的,因此可以把要執(zhí)行的命令放在一個(gè)列表中

if __name__ == '__main__':
    pytest.main(['-m qc and beta', '-s'])	# 標(biāo)簽名不需要加引號(hào)

關(guān)于pytest的指令,可以通過控制臺(tái)執(zhí)行pytest --help查看,上面舉例中-s命令是指打印更加詳細(xì)的信息,如果程序運(yùn)行過程當(dāng)中的print()信息打印不出來,可以加上-s可選參數(shù),它是-- capture=no的縮寫。

skip跳過標(biāo)記

​在維護(hù)測(cè)試用例的過程中,可能在一個(gè)階段某些用例已經(jīng)不需要了,或者在指定條件下是不需要運(yùn)行的,那么我們就可以通過mark.skip跳過這些函數(shù)或者類,兩種跳過方式:

  • 直接跳過: @pytest.mark.skip(reason = “原因”) ,這里原因是可選參數(shù)
  • 條件跳過,即滿足某個(gè)條件才跳過:@pytest.mark.skipif(a == 1, reason = “原因”)
db_host = 'localhost'

@pytest.mark.skip("和現(xiàn)在的需求不符合")	# 不滿足當(dāng)下了,或別人編寫的暫時(shí)不能刪的
def test_yuz(self):
    pass

@pytest.mark.skipif(db_host == 'localhost', reason='只測(cè)試線上環(huán)境,不測(cè)試本地環(huán)境')
def test_develop_env(self):
    pass

到此這篇關(guān)于詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹的文章就介紹到這了,更多相關(guān)pytest mark標(biāo)記 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python的pytest框架之命令行參數(shù)詳解(上)
  • 詳解用Pytest+Allure生成漂亮的HTML圖形化測(cè)試報(bào)告
  • python pytest進(jìn)階之conftest.py詳解
  • python pytest進(jìn)階之fixture詳解
  • Pytest測(cè)試框架基本使用方法詳解
  • Python 測(cè)試框架unittest和pytest的優(yōu)劣
  • Pytest參數(shù)化parametrize使用代碼實(shí)例
  • pytest中文文檔之編寫斷言
  • 在pycharm中文件取消用 pytest模式打開的操作

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹》,本文關(guān)鍵詞  詳解,pytest,實(shí)現(xiàn),mark,標(biāo)記,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章