最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

全網(wǎng)非常詳細(xì)的pytest配置文件

 更新時間:2022年07月15日 10:44:27   作者:鄒鄒很busy。  
本文主要介紹了全網(wǎng)非常詳細(xì)的pytest配置文件,pytest的主配置文件,可以改變pytest的默認(rèn)行為,有很多可配置的選項,感興趣的可以了解一下

說到配置,大家可能想到的是不經(jīng)常更改的內(nèi)容,比如Django里的settings.py文件,或者我們做自動化的時候,把測試環(huán)境的域名和正式環(huán)境的域名放到一個配置文件里,所有的接口都從這個文件里讀取。這樣,如果有一天,我們的域名變了,我們只需要更改配置里的域名就可以了。pytest里也有幾個配置文件。

  • pytest.ini:pytest的主配置文件,可以改變pytest的默認(rèn)行為,有很多可配置的選項。
  • conftest.py:是本地的插件庫,其中的hook函數(shù)和fixture將作用于該文件所在的目錄以及所有子目錄。
  • __init__.py:每個測試子目錄都包含該文件時,那么在多個測試目錄中可以出現(xiàn)同名測試文件。
  • tox.ini:它與pytest.ini類似,只不過是tox的配置文件,你可以把pytest的配置都寫在tox.ini里,這樣就不用同時使用tox.ini和pytest.ini兩個文件

更改默認(rèn)命令行選項

我們之前已經(jīng)用過pytest命令行選項了,比如-v/--verbose可以輸出詳細(xì)信息,-l/--showlocals可以查看失敗測試用例里堆棧中的局部變量。你也許經(jīng)常要用到某些參數(shù),又不想重復(fù)輸入,這時可以使用pytest.ini文件里的addopts設(shè)置。

[pytest]
addopts = -rsxX -l --tb=short --strict

--rsxX表示pytest報告所有測試用例被跳過、預(yù)計失敗、預(yù)計失敗但實際通過的原因。-l表示pytest報告所有失敗測試的堆棧中的局部變量。--tb=short表示簡化堆?;厮菪畔?,只保留文件和行數(shù)。--strict選項表示禁止使用未在配置文件中注冊的標(biāo)記。

我們有個test_two.py文件,里面有如下代碼

def inc(x):
    return x + 1

def test_answer():
    assert inc(3) == 55

def test_answer1():
    assert inc(4) == 5

我們沒有添加如上命令執(zhí)行一遍

再去pytest.int里添加上上面的代碼,在去執(zhí)行一遍

注冊標(biāo)記來防止拼寫錯誤

在前面我們學(xué)過,自定義標(biāo)記可以簡化測試工作,讓我們用指定的標(biāo)記運行某個測試子集。但是,標(biāo)記很容易拼錯,比如把@pytest.mark.smoke拼成@pytest.mark.somke,默認(rèn)情況下。這不會引起程序錯誤。pytest會以為這是你創(chuàng)建的另一個標(biāo)記。為了避免拼寫錯誤??梢栽趐ytest.ini文件里注冊標(biāo)記

[pytest]
markers =
    smoke: Run the smoke test functions for tasks project
    get: Run the test functions that test tasks.get()

修改test.two.py

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)記注冊好后,可以通過pytest --markers來查看

沒有注冊的標(biāo)記不會出現(xiàn)在--markers列表里。如果使用了--strict選項,遇到拼寫錯誤的標(biāo)記或未注冊的標(biāo)記就會報錯。

pytest.ini里寫如下代碼

[pytest]
markers =
    smoke: Run the smoke test functions for tasks project
    get: Run the test functions that test tasks.get()

上面的代碼我們在執(zhí)行的時候,把smoke故意寫錯了,也沒有報錯,只是給我們一個警告,只需要我們在ini里注冊下就不會有警告了

在去修改pytest.ini里的代碼

[pytest]
addopts = -rsxX -l --tb=short --strict
markers =
    smoke: Run the smoke test functions for tasks project
    get: Run the test functions that test tasks.get()

我們在ini里加上了addopts = -rsxX -l --tb=short --strict 這句代碼之后,如果我們拼錯了就會報錯

指定pytest的最低版本號

有些功能是隨著pytest版本的更新而加入到里面的,如果我們不想用比較低的版本,可以在配置里指定最低的版本號。

minversion選項可以指定運行測試用例的pytest的最低版本。

[pytest]
minversion = 4.0

如果使用了老版本的pytest運行該測試,就會得到一個錯誤信息。

指定pytest忽略某些目錄

pytest執(zhí)行測試搜索時,會遞歸遍歷所有子目錄,包括某些你明知道沒必要遍歷的目錄。遇到這種情況,你可以使用norecurse選項簡化pytest的搜索工作。

norecurse的默認(rèn)設(shè)置是 .* build dist CVS -darcs {arch}和 *.egg。因為有 .*,所以將虛擬環(huán)境命名為.venv是一個好注意,所有以.(點)開頭的目錄都不會被訪問。如果不是以.(點)開頭,那么需要把它加入norecursedirs里。比如我想忽略test_001目錄

[pytest]
norecursedirs = .* venv test_001 *.egg dist build

先來看下目錄結(jié)構(gòu)

test_one.py

import pytest
def test_case_01():
    assert 0 == 0

def test_case_02():
    assert 0 == 0

test_one.py

test_first

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

test_first

如果我們不指定norecursedirs就會執(zhí)行djangotest目錄下的所有文件

指定norecursedirs

[pytest]
norecursedirs = .* venv test_001 *.egg dist build
addopts = -rsxX -l --tb=short --strict
markers =
    smoke: Run the smoke test functions for tasks project
    get: Run the test functions that test tasks.get()
    smoek: run
    post: Run post

也可以指定多個目錄

[pytest]
norecursedirs = .* venv test_001 test_002 *.egg dist build

指定測試目錄

norecuredirs告訴pytest哪些路徑不用訪問,而testpaths則指示pytest去哪里訪問。testpaths是一系列相對于根目錄的路徑,用于限定測試用例的搜索范圍。只有在pytest未指定文件目錄參數(shù)或測試用例標(biāo)識符時,該選項才有作用

如果我們只想執(zhí)行test_001下的測試用例,則可以把test_001放到testpaths里

[pytest]
testpaths = test_001

那如果我既指定了testpaths和norecursedirs ,而且兩個是一樣的,結(jié)果會怎樣

[pytest]
testpaths = test_001
norecursedirs = .* venv test_001  *.egg dist build

從運行結(jié)果可以看出,如果兩個都指定,且沖突的話,是按照指定的testpaths執(zhí)行的,是不是因為testpaths在上面的原因?qū)е碌??我們換一下順序

[pytest]
norecursedirs = .* venv test_001  *.egg dist build
testpaths = test_001

從上面兩次的運行結(jié)果可以看出,如果既指定了testpaths和norecursedirs ,而且兩個是一樣的,則是按照testpaths執(zhí)行的

更改測試搜索的規(guī)則

pytest根據(jù)一定的規(guī)則搜索并運行測試,標(biāo)準(zhǔn)的測試搜索規(guī)則如下。

  • 從一個或多個目錄開始查找。你可以在命令行指定文件名或目錄名。如果未指定,則使用當(dāng)前目錄
  • 在該目錄和所有子目錄下遞歸查找測試模塊
  • 測試模塊是指文件名為test_*.py或*_test.py的文件
  • 在測試模塊中查找以test_開頭的函數(shù)名。
  • 查找名字以Test開頭的類,其中,首先篩選掉包含__init__函數(shù)的類,在查找類中以Test_開頭的類方法

以上是標(biāo)準(zhǔn)的測試搜索規(guī)則,你也可以更改它們

python_classes

通常pytest的測試搜索規(guī)則是尋找以Test*開頭的測試類,而且這個類不能有__init__()函數(shù)。但是,如果把測試類命名為<something>Test或<something>Suite怎么辦?python_classes就可以解決這個問題。

[pytest]
python_classes = *Test Test* *Suite

這個設(shè)置允許我們像下面這樣給類取名

class DeleteSuite():
    def test_delete_1(self):
        pass
    def test_delete_2(self):
        pass

我們修改test_001目錄下的test_onne.py文件

class DeleteSuite():
    def test_delete_1(self):
        assert True

    def test_delete_2(self):
        assert False

先不添加python_classes執(zhí)行一下

然后我們添加上python_classes執(zhí)行一下

[pytest]
python_classes = *Test Test* *Suite

python_files

像pytest_classes一樣,python_files可以更改默認(rèn)的測試搜索規(guī)則,而不是僅查找以test_*開頭的文件和以*_test結(jié)尾的文件

假設(shè)你的測試文件統(tǒng)一命名為check_<something>.py。你不必重命名所有的測試文件,只要在pytest.ini文件里增加一行配置即可

[pytest]
python_files = test_* *_test check_*

我們將test_one.py改為check_one.py在執(zhí)行

[pytest]
python_files = test_* *_test check_*
python_classes = *Test Test* *Suite

python_functions

python_functions與之前的兩個設(shè)置類似,它只是用來測試函數(shù)和方法的命名。more規(guī)則以test_*開頭。如果想添加check_*,則只需要添加一行配置

[pytest]
python_functions = test_* check_*

修改test_one.py下的代碼

class DeleteSuite():
    def check_delete_1(self):
        assert True

    def check_delete_2(self):
        assert False
[pytest]
python_functions = test_* check_*
python_files = test_* *_test check_*
python_classes = *Test Test* *Suite
addopts = -rsxX -l -v --tb=short --strict

禁用XPATH

設(shè)置xfail_strict = true將會使那些被標(biāo)記為@pytest.mark.xfail但實際通過的測試用例也被報告為失敗

[pytest]
xfail_strict = true

很難理解是吧?。?!喝杯茶,我給你給個栗子吃

test_one.py代碼如下,可以看到,我們有兩個測試用例,都是標(biāo)記的預(yù)期失敗,但其中一個是會成功,一個是失敗的,我們不加xfail_strict = true來執(zhí)行一下

import pytest

@pytest.mark.xfail()
def test_answer():
    assert 5 == 5

@pytest.mark.xfail()
def test_answer1():
    assert 5 != 5

可以看到有一個通過了,有一個失敗了,但是我們?nèi)绻氚褬?biāo)記為預(yù)期失敗的,不管結(jié)果是成功還是失敗都標(biāo)記為失敗,則要在配置里加xfail_strict = true

[pytest]
xfail_strict = true

這樣兩個用例就都是失敗的

到此這篇關(guān)于全網(wǎng)非常詳細(xì)的pytest配置文件的文章就介紹到這了,更多相關(guān)pytest配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python列表list常用內(nèi)建函數(shù)實例小結(jié)

    Python列表list常用內(nèi)建函數(shù)實例小結(jié)

    這篇文章主要介紹了Python列表list常用內(nèi)建函數(shù),結(jié)合實例形式總結(jié)分析了Python列表list常見內(nèi)建函數(shù)的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • python自動循環(huán)定時開關(guān)機(非重啟)測試

    python自動循環(huán)定時開關(guān)機(非重啟)測試

    這篇文章主要為大家詳細(xì)介紹了python自動循環(huán)定時開關(guān)機(非重啟)測試,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 基于Python實現(xiàn)圖片文字合成工具

    基于Python實現(xiàn)圖片文字合成工具

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實現(xiàn)圖片文字合成工具,實現(xiàn)處理圖片文件、在圖片上添加文本等功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 如何構(gòu)建第二個Django的應(yīng)用程序

    如何構(gòu)建第二個Django的應(yīng)用程序

    這篇文章主要介紹了如何構(gòu)建第二個Django的應(yīng)用程序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Python批量修改文件名案例匯總

    Python批量修改文件名案例匯總

    在文件管理和數(shù)據(jù)處理中,批量修改文件名是一項常見且重要的任務(wù),Python作為一種功能強大的編程語言,提供了豐富的庫和工具來簡化這一過程,本文將結(jié)合實際案例,詳細(xì)介紹如何通過Python批量修改文件名,需要的朋友可以參考下
    2024-08-08
  • 詳細(xì)講解Python中的文件I/O操作

    詳細(xì)講解Python中的文件I/O操作

    這篇文章主要介紹了Python中的文件I/O操作,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 解決python中的冪函數(shù)、指數(shù)函數(shù)問題

    解決python中的冪函數(shù)、指數(shù)函數(shù)問題

    今天小編就為大家分享一篇解決python中的冪函數(shù)、指數(shù)函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • pytorch 自定義參數(shù)不更新方式

    pytorch 自定義參數(shù)不更新方式

    今天小編就為大家分享一篇pytorch 自定義參數(shù)不更新方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python開發(fā)之射擊闖關(guān)游戲的實現(xiàn)

    Python開發(fā)之射擊闖關(guān)游戲的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)射擊闖關(guān)游戲,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以了解一下
    2023-01-01
  • Python辦公自動化之Excel介紹

    Python辦公自動化之Excel介紹

    大家好,本篇文章主要講的是Python辦公自動化之Excel介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

剑川县| 新建县| 金沙县| 武定县| 阿合奇县| 罗平县| 周至县| 巴彦淖尔市| 乡宁县| 平武县| 墨江| 夹江县| 镇江市| 西昌市| 安新县| 惠来县| 广饶县| 石家庄市| 固镇县| 海晏县| 拉萨市| 潜江市| 岚皋县| 托里县| 原平市| 白朗县| 崇文区| 枣阳市| 汪清县| 建始县| 青岛市| 京山县| 东山县| 七台河市| 枣阳市| 天峻县| 左权县| 平武县| 黔西县| 舒城县| 芜湖市|