pytest配置文件pytest.ini的具體使用
前言
說(shuō)到配置,大家可能想到的是不經(jīng)常更改的內(nèi)容,比如Django里的settings.py文件,或者我們做自動(dòng)化的時(shí)候,把測(cè)試環(huán)境的域名和正式環(huán)境的域名放到一個(gè)配置文件里,所有的接口都從這個(gè)文件里讀取。這樣,如果有一天,我們的域名變了,我們只需要更改配置里的域名就可以了。pytest里也有幾個(gè)配置文件。
pytest.ini:pytest的主配置文件,可以改變pytest的默認(rèn)行為,有很多可配置的選項(xiàng)。
conftest.py:是本地的插件庫(kù),其中的hook函數(shù)和fixture將作用于該文件所在的目錄以及所有子目錄。
init.py:每個(gè)測(cè)試子目錄都包含該文件時(shí),那么在多個(gè)測(cè)試目錄中可以出現(xiàn)同名測(cè)試文件。
tox.ini:它與pytest.ini類(lèi)似,只不過(guò)是tox的配置文件,你可以把pytest的配置都寫(xiě)在tox.ini里,這樣就不用同時(shí)使用tox.ini和pytest.ini兩個(gè)文件
本文只談pytest.ini的使用
pytest.ini的內(nèi)容構(gòu)成
先看一個(gè)簡(jiǎn)單的示例,這個(gè)只展示了配置文件中的三個(gè)配置項(xiàng),更多配置項(xiàng)可以查看http://m.fzitv.net/article/255567.htm

配置項(xiàng)markers
先談markers,它的作用是做注冊(cè)標(biāo)記,防止拼寫(xiě)錯(cuò)誤。比如把@pytest.mark.smoke拼成@pytest.mark.somke,默認(rèn)情況下。這不會(huì)引起程序錯(cuò)誤。pytest會(huì)以為這是你創(chuàng)建的另一個(gè)標(biāo)記。為了避免拼寫(xiě)錯(cuò)誤??梢栽趐ytest.ini文件里注冊(cè)標(biāo)記
[pytest]
markers =
smoke: Run the smoke test functions for tasks project
get: Run the test functions that test tasks.get()
import pytest
def inc(x):
return x + 1
@pytest.mark.smoke
def test_answer():
assert inc(3) == 55
@pytest.mark.post
def test_answer1():
assert inc(4) == 5
標(biāo)記注冊(cè)好后,可以通過(guò)pytest --markers來(lái)查看

如果我們?cè)趫?zhí)行時(shí),故意寫(xiě)錯(cuò)mark標(biāo)簽,如把smoke故意寫(xiě)錯(cuò)了,也沒(méi)有報(bào)錯(cuò),只是給我們一個(gè)警告,只需要我們?cè)趇ni里注冊(cè)下就不會(huì)有警告了

如果使用了–strict選項(xiàng),遇到拼寫(xiě)錯(cuò)誤的標(biāo)記或未注冊(cè)的標(biāo)記就會(huì)報(bào)錯(cuò)。并且在pytest.ini里注冊(cè)了標(biāo)記,但是沒(méi)有函數(shù)使用該標(biāo)記,也會(huì)報(bào)錯(cuò)。

配置項(xiàng)testpaths
testpaths指示pytest去哪里訪問(wèn)。testpaths是一系列相對(duì)于根目錄的路徑,用于限定測(cè)試用例的搜索范圍。只有在pytest未指定文件目錄參數(shù)或測(cè)試用例標(biāo)識(shí)符時(shí),該選項(xiàng)才有作用
[pytest] testpaths = test_001

配置項(xiàng)addopts
更改默認(rèn)命令行選項(xiàng)
pytest用命令行運(yùn)行時(shí),有時(shí)候需要經(jīng)常要用到某些參數(shù),又不想重復(fù)輸入,這時(shí)可以使用pytest.ini文件里的addopts設(shè)置
[pytest] addopts=-vqs
編寫(xiě)的用例
from selenium import webdriver
def testOpenUrl():
try:
driver = webdriver.Firefox() # 打開(kāi)瀏覽器
driver.get('http://www.baidu.com') # 訪問(wèn)百度
title = driver.title # 獲取百度首頁(yè)的title
assert title == '百度一下,你就知道' # 斷言
except AssertionError:
raise AssertionError('斷言失敗!')
driver.quit()-v:pytest -v 說(shuō)明:可以輸出用例更加詳細(xì)的執(zhí)行信息,比如用例所在的文件及用例名稱(chēng)等

-s:pytest -s 說(shuō)明:輸入我們用例中的調(diào)式信息,比如print的打印信息等,我們?cè)谏厦嬗美?行加上一句 print(driver.title),我們?cè)龠\(yùn)行一下我們的用例看看

-m:pytest -m ”標(biāo)記“ 說(shuō)明:執(zhí)行特定的測(cè)試用例。修改下上面的用例代碼
from selenium import webdriver
import pytest
@pytest.mark.run_this_testcase #添加mark的標(biāo)簽
def testOpenUrl():
try:
driver = webdriver.Firefox() # 打開(kāi)瀏覽器
driver.get('http://www.baidu.com') # 訪問(wèn)百度
title = driver.title # 獲取百度首頁(yè)的title
print(driver.title)
assert title == '百度一下,你就知道' # 斷言
except AssertionError:
raise AssertionError('斷言失敗!')
driver.quit()
def testBaidu():
driver = webdriver.Firefox() # 打開(kāi)瀏覽器
driver.get('http://www.baidu.com') # 訪問(wèn)百度
title = driver.title # 獲取百度首頁(yè)的title
assert title == '百度一下,你就知道' # 斷言

-q:pytest -q 說(shuō)明:簡(jiǎn)化控制臺(tái)的輸出,可以看出輸出信息和上面的結(jié)果都不一樣, 下圖中有兩個(gè)…點(diǎn)代替了pass結(jié)果

-k:pytest -k “關(guān)鍵字” 說(shuō)明:執(zhí)行用例包含“關(guān)鍵字”的用例

–tb=style:屏蔽測(cè)試用例執(zhí)行輸出的回溯信息,可以簡(jiǎn)化用例失敗時(shí)的輸出信息。style可以是 on,line,short,具體區(qū)別請(qǐng)自行體驗(yàn)。如使用pytest --tb=no

更多pytest參數(shù)可以參考文章
http://m.fzitv.net/article/164071.htm
http://m.fzitv.net/article/164074.htm
參考鏈接:
http://m.fzitv.net/article/255567.htm
到此這篇關(guān)于pytest配置文件pytest.ini的具體使用的文章就介紹到這了,更多相關(guān)pytest配置文件pytest.ini內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法
這篇文章主要給大家介紹了關(guān)于Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法,Python生成(導(dǎo)出)csv文件其實(shí)很簡(jiǎn)單,我們一般可以用csv模塊或者pandas庫(kù)來(lái)實(shí)現(xiàn),需要的朋友可以參考下2023-07-07
使用Python實(shí)現(xiàn)批量修改文件的修改日期功能
在日常的文件管理中,您可能需要批量修改文件的修改日期,比如,您可能希望將某個(gè)文件夾中的所有文件的修改日期隨機(jī)設(shè)置為6到8月份之間的日期,這在數(shù)據(jù)整理中可能非常有用,本文將詳細(xì)介紹如何使用Python實(shí)現(xiàn)這一功能,需要的朋友可以參考下2024-10-10
pycharm 實(shí)現(xiàn)復(fù)制一行的快捷鍵
這篇文章主要介紹了pycharm 實(shí)現(xiàn)復(fù)制一行的快捷鍵,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
python+mediapipe+opencv實(shí)現(xiàn)手部關(guān)鍵點(diǎn)檢測(cè)功能(手勢(shì)識(shí)別)
這篇文章主要介紹了python+mediapipe+opencv實(shí)現(xiàn)手部關(guān)鍵點(diǎn)檢測(cè)功能(手勢(shì)識(shí)別),本文僅僅簡(jiǎn)單介紹了mediapipe的使用,而mediapipe提供了大量關(guān)于圖像識(shí)別等的方法,需要的朋友可以參考下2022-01-01
Django 多語(yǔ)言教程的實(shí)現(xiàn)(i18n)
這篇文章主要介紹了Django 多語(yǔ)言教程的實(shí)現(xiàn)(i18n),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
PyQt5實(shí)現(xiàn)暗黑風(fēng)格的計(jì)時(shí)器
這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)暗黑風(fēng)格的計(jì)時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python對(duì)130w+張圖片檢索的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Python對(duì)130w+張圖片檢索的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入
這篇文章主要介紹了python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入的相關(guān)資料,需要的朋友可以參考下2016-04-04
利用python實(shí)現(xiàn)xml與數(shù)據(jù)庫(kù)讀取轉(zhuǎn)換的方法
這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)xml與數(shù)據(jù)庫(kù)讀取轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
基于telepath庫(kù)實(shí)現(xiàn)Python和JavaScript之間交換數(shù)據(jù)
telepath是一個(gè)Django庫(kù),用于在Python和JavaScript之間交換數(shù)據(jù),使您可以構(gòu)建具有豐富客戶端接口的應(yīng)用程序,同時(shí)將業(yè)務(wù)邏輯保留在服務(wù)器端代碼中。2021-05-05

