Pytest官方教程-22-API參考-Fixtures

目錄:

  1. 安裝及入門
  2. 使用和調(diào)用方法
  3. 原有TestSuite使用方法
  4. 斷言的編寫和報(bào)告
  5. Pytest fixtures:清晰 模塊化 易擴(kuò)展
  6. 使用Marks標(biāo)記測試用例
  7. Monkeypatching/對模塊和環(huán)境進(jìn)行Mock
  8. 使用tmp目錄和文件
  9. 捕獲stdout及stderr輸出
  10. 捕獲警告信息
  11. 模塊及測試文件中集成doctest測試
  12. skip及xfail: 處理不能成功的測試用例
  13. Fixture方法及測試用例的參數(shù)化
  14. 緩存: 使用跨執(zhí)行狀態(tài)
  15. unittest.TestCase支持
  16. 運(yùn)行Nose用例
  17. 經(jīng)典xUnit風(fēng)格的setup/teardown
  18. 安裝和使用插件
  19. 插件編寫
  20. 編寫鉤子(hook)方法
  21. 運(yùn)行日志
  22. API參考
    1. 方法(Functions)
    2. 標(biāo)記(Marks)
    3. 鉤子(Hooks)
    4. 裝置(Fixtures)
    5. 對象(Objects)
    6. 特殊變量(Special Variables)
    7. 環(huán)境變量(Environment Variables)
    8. 配置選項(xiàng)(Configuration Options)
  23. 優(yōu)質(zhì)集成實(shí)踐
  24. 片狀測試
  25. Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
  26. 配置選項(xiàng)
  27. 示例及自定義技巧
  28. Bash自動(dòng)補(bǔ)全設(shè)置

22-API參考-03-Fixtures

API參考-Fixtures

裝置(Fixtures)

教程pytest fixtures:顯式翔怎,模塊化堪遂,可擴(kuò)展
測試函數(shù)或其他Fixtures通過將它們聲明為參數(shù)名稱來RequestFixtures。
需要Fixtures的測試示例:

def test_output(capsys):
    print("hello")
    out, err = capsys.readouterr()
    assert out == "hello\n"

需要另一個(gè)Fixtures的Fixtures示例:

@pytest.fixture
def db_session(tmpdir):
    fn = tmpdir / "db.file"
    return connect(str(fn))

有關(guān)更多詳細(xì)信息,請參閱完整的燈具文檔

@ pytest.fixture

裝飾器標(biāo)記Fixtures工廠方法酌媒。
可以使用該裝飾器(帶或不帶參數(shù))來定義Fixtures方法糙置。
稍后可以引用fixture函數(shù)的名稱列敲,以便在運(yùn)行測試之前調(diào)用它:測試模塊或類可以使用pytest.mark.usefixtures(fixturename) 標(biāo)記。
測試函數(shù)可以直接使用Fixtures名稱作為輸入?yún)?shù)弧械,在這種情況下,將注入從Fixtures函數(shù)返回的Fixtures實(shí)例艰额。
Fixtures可以使用returnyield 語句為測試函數(shù)提供它們的值纬纪。無論測試結(jié)果如何,yieldyield語句作為拆卸代碼執(zhí)行后使用代碼塊時(shí)篓跛,必須只生成一次膝捞。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • 范圍 -
    指此Fixtures共享范圍的一個(gè) "function"(默認(rèn)), ,蔬咬, "class"或鲤遥。"module"``"package"``"session"
    "package"在這個(gè)時(shí)候被認(rèn)為是實(shí)驗(yàn)性的
  • params - 一個(gè)可選的參數(shù)列表林艘,它將導(dǎo)致多次調(diào)用fixture函數(shù)和使用它的所有測試盖奈。
  • autouse - 如果為True,則為所有可以看到它的測試激活fixture命令狐援。如果為False(默認(rèn)值)钢坦,則需要顯式引用來激活Fixtures。
  • ids - 每個(gè)對應(yīng)于參數(shù)的字符串ID列表啥酱,以便它們是測試ID的一部分爹凹。如果沒有提供id,它們將從params自動(dòng)生成镶殷。
  • name - 燈具的名稱禾酱。這默認(rèn)為裝飾函數(shù)的名稱。如果Fixtures在定義它的同一模塊中使用绘趋,F(xiàn)ixtures的方法名稱將被RequestFixtures的方法arg遮蔽; 解決此問題的一種方法是命名裝飾函數(shù) fixture_<fixturename>颤陶,然后使用@pytest.fixture(name='<fixturename>')
    |

config.cache的

教程緩存:使用跨testrun狀態(tài)陷遮。
config.cache對象允許其他插件和Fixtures在測試運(yùn)行中存儲(chǔ)和檢索值滓走。要從燈具Request訪問它pytestconfig到你的燈具并得到它pytestconfig.cache
在引擎蓋下帽馋,緩存插件使用stdlib模塊的簡單 dumps/ loadsAPI json搅方。

返回給定鍵的緩存值。如果尚未緩存任何值或無法讀取值绽族,則返回指定的默認(rèn)值腰懂。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • key - 必須是/分隔值。通常项秉,名字是你的插件或你的應(yīng)用程序的名稱。
  • default - 必須在緩存未命中或緩存值無效的情況下提供慷彤。
    |

保存給定密鑰的值娄蔼。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • key - 必須是/分隔值。通常底哗,名字是你的插件或你的應(yīng)用程序的名稱岁诉。
  • value - 必須是基本python類型的任意組合,包括嵌套類型跋选,例如字典列表涕癣。
    |

返回具有給定名稱的目錄路徑對象。如果該目錄尚不存在前标,則將創(chuàng)建該目錄坠韩。你可以使用它來管理文件距潘,例如跨測試會(huì)話存儲(chǔ)/檢索數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | name - 必須是不包含/分隔符的字符串只搁。確保該名稱包含你的插件或應(yīng)用程序標(biāo)識(shí)符音比,以防止與其他緩存用戶沖突。 |

capsys

教程捕獲stdout / stderr輸出氢惋。

啟用對sys.stdout和的寫入文本捕獲sys.stderr洞翩。
捕獲的輸出通過capsys.readouterr()方法調(diào)用提供,方法調(diào)用返回一個(gè)namedtuple焰望。 并且將對象骚亿。(out, err)``out``err``text
返回的實(shí)例CaptureFixture
例:

def test_output(capsys):
    print("hello")
    captured = capsys.readouterr()
    assert captured.out == "hello\n"

目的是通過恢復(fù)capsys()熊赖,capsysbinary()来屠,capfd()capfdbinary() 燈具。

到目前為止秫舌,讀取并返回捕獲的輸出的妖,重置內(nèi)部緩沖區(qū)。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 返回: | 捕獲內(nèi)容作為帶有outerr字符串屬性的namedtuple |

暫時(shí)禁用“with”塊內(nèi)的捕獲足陨。

capsysbinary

教程捕獲stdout / stderr輸出嫂粟。

啟用字節(jié)捕獲寫入sys.stdoutsys.stderr
捕獲的輸出通過capsysbinary.readouterr() 方法調(diào)用提供墨缘,方法調(diào)用返回一個(gè)namedtuple星虹。 并且將對象。(out, err)``out``err``bytes
返回的實(shí)例CaptureFixture镊讼。
例:

def test_output(capsysbinary):
    print("hello")
    captured = capsysbinary.readouterr()
    assert captured.out == b"hello\n"

capfd

教程捕獲stdout / stderr輸出宽涌。

允許寫的文字捕捉到文件描述符12
捕獲的輸出通過capfd.readouterr()方法調(diào)用提供蝶棋,方法調(diào)用返回一個(gè)namedtuple卸亮。 并且將對象。(out, err)``out``err``text
返回的實(shí)例CaptureFixture玩裙。
例:

def test_system_echo(capfd):
    os.system('echo "hello"')
    captured = capsys.readouterr()
    assert captured.out == "hello\n"

capfdbinary

教程捕獲stdout / stderr輸出兼贸。

啟用字節(jié)捕獲文件描述符12
捕獲的輸出通過capfd.readouterr()方法調(diào)用提供吃溅,方法調(diào)用返回一個(gè)namedtuple溶诞。 并且將對象。(out, err)``out``err``byte
返回的實(shí)例CaptureFixture决侈。
例:

def test_system_echo(capfdbinary):
    os.system('echo "hello"')
    captured = capfdbinary.readouterr()
    assert captured.out == b"hello\n"

doctest_namespace

教程模塊和測試文件的Doctest集成螺垢。

返回一個(gè)dict將被注入doctests命名空間的Fixture。
通常這個(gè)Fixtures與另一個(gè)autouseFixtures一起使用:

@pytest.fixture(autouse=True)
def add_np(doctest_namespace):
    doctest_namespace["np"] = numpy

有關(guān)更多詳細(xì)信息:'doctest_namespace'Fixtures

Request

教程根據(jù)命令行選項(xiàng)將不同的值傳遞給測試函數(shù)枉圃。
requestFixtures是一個(gè)特殊的Fixtures提供Request測試方法的信息功茴。

從測試或Fixtures方法RequestFixtures。
Request對象提供對Request測試上下文的訪問讯蒲,并且具有可選param屬性痊土,以防Fixtures間接參數(shù)化。

正在執(zhí)行此Request的Fixtures

范圍字符串墨林,“方法”赁酝,“類”,“模塊”旭等,“會(huì)話”之一

此Request中所有活動(dòng)燈具的名稱

底層集合節(jié)點(diǎn)(取決于當(dāng)前Request范圍)

與此Request關(guān)聯(lián)的pytest配置對象酌呆。

如果Request具有按方法范圍,則測試函數(shù)對象搔耕。

收集測試函數(shù)的class(可以是None)隙袁。

收集測試函數(shù)的實(shí)例(可以是None)。

收集測試函數(shù)的python模塊對象弃榨。

收集此測試的測試模塊的文件系統(tǒng)路徑菩收。

底層節(jié)點(diǎn)的關(guān)鍵字/標(biāo)記字典。

pytest會(huì)話對象鲸睛。

在Request測試上下文完成執(zhí)行的最后一次測試之后添加要調(diào)用的終結(jié)器/拆卸函數(shù)娜饵。

將標(biāo)記應(yīng)用于單個(gè)測試函數(shù)調(diào)用。如果你不希望在所有函數(shù)調(diào)用中都有關(guān)鍵字/標(biāo)記官辈,則此方法很有用箱舞。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | marker - _pytest.mark.MarkDecorator通過調(diào)用創(chuàng)建的對象pytest.mark.NAME(...)。 |

使用給定的消息引發(fā)FixtureLookupError拳亿。

動(dòng)態(tài)運(yùn)行命名Fixtures方法晴股。
建議盡可能通過函數(shù)參數(shù)聲明燈具。但是肺魁,如果你只能在測試設(shè)置時(shí)決定是否使用其他Fixtures电湘,則可以使用此方法在Fixtures或測試方法體內(nèi)檢索它。

不推薦使用鹅经,請使用getfixturevalue胡桨。

pytestconfig

返回_pytest.config.Config對象的會(huì)話范圍的fixture 。
例:

def test_foo(pytestconfig):
    if pytestconfig.getoption("verbose") > 0:
        ...

record_property

教程record_property瞬雹。

為調(diào)用測試添加額外的屬性。用戶屬性成為測試報(bào)告的一部分刽虹,可供配置的報(bào)告者使用酗捌,如JUnit XML。該fixture可以調(diào)用,其值自動(dòng)進(jìn)行xml編碼胖缤。(name, value)
例:

def test_function(record_property):
    record_property("example_key", 1)

caplog

教程記錄尚镰。

訪問和控制日志捕獲。
通過以下屬性/方法可以獲取捕獲的日志:

 string containing formatted log output
* caplog.records         -> list of logging.LogRecord instances
* caplog.record_tuples   -> list of (logger_name, level, message) tuples
* caplog.clear()         -> clear captured records and formatted log output string

這將返回一個(gè)_pytest.logging.LogCaptureFixture實(shí)例哪廓。

提供對日志捕獲的訪問和控制狗唉。

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 返回類型: | LogCaptureHandler |

獲取其中一個(gè)可能的測試階段的日志記錄。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | whenstr) - 從哪個(gè)測試階段獲取記錄涡真。有效值為:“setup”分俯,“call”和“teardown”。 |
| 返回類型: | 列表[ logging.LogRecord ] |
| 返回: | 在給定階段捕獲的記錄列表 |
版本3.4中的新方法哆料。

返回日志文本缸剪。

返回日志記錄列表。

返回用于斷言比較的日志記錄的精簡版本的列表东亦。
元組的格式是:

(logger_name杏节,log_level,message)

返回格式插值日志消息的列表典阵。
與包含格式字符串和插值參數(shù)的“記錄”不同奋渔,此列表中的日志消息都是內(nèi)插的。與包含處理程序輸出的“text”不同壮啊,此列表中的日志消息與級(jí)別嫉鲸,時(shí)間戳等一致,使得精確比較更可靠他巨。
請注意充坑,不包括回溯或堆棧信息(來自logging.exception()或記錄函數(shù)的<cite>exc_info</cite>或<cite>stack_info</cite>參數(shù)),因?yàn)檫@是由處理程序中的格式化程序添加的染突。
版本3.7中的新方法捻爷。

重置日志記錄列表和捕獲的日志文本。

設(shè)置捕獲日志的級(jí)別份企。在測試結(jié)束時(shí)也榄,該級(jí)別將恢復(fù)到之前的值。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • levelint) - 記錄器到級(jí)別司志。
  • loggerstr) - 更新級(jí)別的記錄器甜紫。如果未給出,則更新根記錄器級(jí)別骂远。
    |
    版本3.4中更改:此方法更改的記錄器級(jí)別將在測試結(jié)束時(shí)恢復(fù)為其初始值囚霸。

上下文管理器,用于設(shè)置捕獲日志的級(jí)別激才。在'with'語句結(jié)束后拓型,級(jí)別將恢復(fù)為其原始值额嘿。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • levelint) - 記錄器到級(jí)別。
  • loggerstr) - 更新級(jí)別的記錄器劣挫。如果未給出册养,則更新根記錄器級(jí)別。
    |

猴補(bǔ)丁

教程Monkeypatching / mocking模塊和環(huán)境压固。

返回的monkeypatchfixture提供了這些輔助方法來修改對象球拦,字典或os.environ:

monkeypatch.setattr(obj, name, value, raising=True)
monkeypatch.delattr(obj, name, raising=True)
monkeypatch.setitem(mapping, name, value)
monkeypatch.delitem(obj, name, raising=True)
monkeypatch.setenv(name, value, prepend=False)
monkeypatch.delenv(name, raising=True)
monkeypatch.syspath_prepend(path)
monkeypatch.chdir(path)

在Request測試方法或Fixtures完成后,所有修改都將被撤消帐我。raising 如果設(shè)置/刪除操作沒有目標(biāo)坎炼,則該參數(shù)確定是否將引發(fā)KeyError或AttributeError。
這將返回一個(gè)MonkeyPatch實(shí)例焚刚。

monkeypatchFixtures返回的對象保留了setattr / item / env / syspath更改的記錄点弯。

上下文管理器返回一個(gè)新MonkeyPatch對象,該對象撤消with在退出時(shí)在塊內(nèi)完成的任何修補(bǔ):

import functools
def test_partial(monkeypatch):
    with monkeypatch.context() as m:
        m.setattr(functools, "partial", 3)

在測試結(jié)束之前需要撤消一些補(bǔ)丁的情況下很有用矿咕,例如stdlib模擬可能會(huì)在模擬時(shí)破壞pytest本身的函數(shù)(例如抢肛,參見#3290)

在目標(biāo)上設(shè)置屬性值碳柱,記住舊值捡絮。如果該屬性不存在,則默認(rèn)引發(fā)AttributeError莲镣。
為方便起見福稳,你可以指定一個(gè)字符串target,將其解釋為虛線導(dǎo)入路徑瑞侮,最后一部分是屬性名稱的圆。示例: 將設(shè)置模塊的方法。monkeypatch.setattr("os.getcwd", lambda:"/")``getcwd``os
raising值確定如果屬性尚不存在半火,setattr是否應(yīng)該失斣铰琛(默認(rèn)為True,這意味著它將引發(fā))钮糖。

刪除屬性nametarget梅掠,默認(rèn)情況下提高AttributeError的它的屬性,以前不存在的店归。
如果未name指定且target為字符串阎抒,則將其解釋為虛線導(dǎo)入路徑,最后一部分為屬性名稱消痛。
如果raising設(shè)置為False且叁,則缺少屬性時(shí)不會(huì)引發(fā)異常。

將字典條目設(shè)置name為值秩伞。

name從dict 刪除逞带。如果不存在則引發(fā)KeyError质涛。
如果raising設(shè)置為False,則如果缺少密鑰掰担,則不會(huì)引發(fā)異常。

將環(huán)境變量設(shè)置namevalue怒炸。如果prepend 是字符带饱,請讀取當(dāng)前環(huán)境變量值并valueprepend字符旁邊添加前綴。

name從環(huán)境中刪除阅羹。如果不存在則引發(fā)KeyError勺疼。
如果raising設(shè)置為False,則在缺少環(huán)境變量時(shí)不會(huì)引發(fā)異常捏鱼。

前置pathsys.path導(dǎo)入位置列表执庐。

將當(dāng)前工作目錄更改為指定的路徑。Path可以是字符串或py.path.local對象导梆。

撤消以前的更改轨淌。此調(diào)用使用撤消堆棧。除非你在撤消調(diào)用后執(zhí)行更多monkeypatching看尼,否則再次調(diào)用它無效递鹉。
通常不需要調(diào)用<cite>undo()</cite>,因?yàn)樗诓鸪陂g會(huì)自動(dòng)調(diào)用藏斩。
請注意躏结,在單個(gè)測試函數(shù)調(diào)用中使用相同的<cite>monkeypatch</cite> fixture。如果測試函數(shù)本身和其中一個(gè)測試Fixtures同時(shí)使用<cite>monkeypatch</cite>狰域,則調(diào)用<cite>undo()</cite>將撤消兩個(gè)函數(shù)中所做的所有更改媳拴。

TESTDIR

此fixture提供了一個(gè)Testdir對測試文件的黑盒測試有用的實(shí)例,使其成為測試插件的理想選擇兆览。
要使用它屈溉,請包含在最頂層的conftest.py文件中:

pytest_plugins = 'pytester'

臨時(shí)測試目錄,帶有測試/運(yùn)行pytest本身的工具拓颓。
這是基于tmpdirFixtures语婴,但提供了許多方法,有助于測試pytest本身驶睦。除非chdir()使用砰左,否則所有方法都將tmpdir用作其當(dāng)前工作目錄。
屬性:
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| TMPDIR: | py.path.local臨時(shí)目錄的實(shí)例场航。 |
| 插件: | 與parseconfig()和 一起使用的插件列表runpytest()缠导。最初這是一個(gè)空列表,但插件可以添加到列表中溉痢。要添加到列表中的項(xiàng)目類型取決于使用它們的方法僻造,因此請參閱它們以獲取詳細(xì)信息憋他。 |

清理全局狀態(tài)工件。
一些方法修改全局解釋器狀態(tài)髓削,這會(huì)嘗試清除它竹挡。它不會(huì)刪除臨時(shí)目錄,因此可以在測試運(yùn)行完成后查看它立膛。

HookRecorder為PluginManager 創(chuàng)建一個(gè)新的揪罕。

cd進(jìn)入臨時(shí)目錄。
這在實(shí)例化時(shí)自動(dòng)完成宝泵。

在testdir中創(chuàng)建新文件好啰。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • extstr) - 文件應(yīng)使用的擴(kuò)展名,包括點(diǎn)儿奶,例如<cite>.py</cite>框往。
  • argslist* [ [str](https://docs.python.org/3/library/stdtypes.html#str "(在Python v3.7中)") ]*) - 所有args將被視為字符串并使用換行符連接。結(jié)果將作為內(nèi)容寫入文件闯捎。該文件的名稱將基于Request此Fixtures的測試方法椰弊。
  • kwargs - 每個(gè)關(guān)鍵字都是文件的名稱,而它的值將被寫為文件的內(nèi)容隙券。
    |
    例子:
testdir.makefile(".txt", "line1", "line2")
testdir.makefile(".ini", pytest="[pytest]\naddopts=-rs\n")

使用'source'作為內(nèi)容寫一個(gè)contest.py文件男应。

使用'source'作為內(nèi)容寫一個(gè)tox.ini文件。

從tox.ini配置文件返回pytest部分娱仔。

.makefile()的擴(kuò)展名為.py的快捷方式沐飘。

.makefile()的擴(kuò)展名為.txt的快捷方式。

將目錄添加到sys.path牲迫,默認(rèn)為tmpdir耐朴。
當(dāng)該對象在每次測試結(jié)束時(shí)死亡時(shí),會(huì)自動(dòng)撤消盹憎。

創(chuàng)建一個(gè)新的(子)目錄筛峭。

創(chuàng)建一個(gè)新的python包。
這會(huì)創(chuàng)建一個(gè)帶有空__init__.py文件的(子)目錄陪每,因此它被識(shí)別為python包影晓。

在測試運(yùn)行失敗時(shí)發(fā)出停止信號(hào)。

發(fā)出中斷的測試運(yùn)行信號(hào)檩禾。

返回此集合節(jié)點(diǎn)的子項(xiàng)(項(xiàng)和收集器)列表挂签。

返回文件的集合節(jié)點(diǎn)。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

返回文件的集合節(jié)點(diǎn)饵婆。
這就好比getnode(),但使用parseconfigure()創(chuàng)建(配置)pytest配置實(shí)例戏售。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | path - py.path.local文件的一個(gè)實(shí)例 |

從集合節(jié)點(diǎn)生成所有測試項(xiàng)。
這將遞歸到集合節(jié)點(diǎn)并返回其中包含的所有測試項(xiàng)的列表。

運(yùn)行“test_func”項(xiàng)嗽交。
調(diào)用測試實(shí)例(包含測試方法的類)必須提供一個(gè).getrunner()方法,該方法應(yīng)該返回一個(gè)可以為單個(gè)項(xiàng)運(yùn)行測試協(xié)議的運(yùn)行器炉媒,例如 _pytest.runner.runtestprotocol()

使用中運(yùn)行測試模塊pytest.main()
此運(yùn)行將“source”寫入臨時(shí)文件并pytest.main()在其上運(yùn)行 ,返回HookRecorder結(jié)果的實(shí)例诗祸。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • source - 測試模塊的源代碼
  • cmdlineargs - 要使用的任何額外命令行參數(shù)
    |
    | 返回: |
    HookRecorder 結(jié)果的實(shí)例
    |

pytest.main(['--collectonly'])在進(jìn)程中運(yùn)行。
運(yùn)行pytest.main()函數(shù)在測試過程本身內(nèi)運(yùn)行所有pytest inline_run()轴总,但返回收集項(xiàng)和HookRecorder實(shí)例的元組。

pytest.main()在進(jìn)程中運(yùn)行博个,返回HookRecorder怀樟。
運(yùn)行該pytest.main()函數(shù)以在測試過程本身內(nèi)運(yùn)行所有pytest。這意味著它可以返回一個(gè)HookRecorder實(shí)例盆佣,該 實(shí)例從該運(yùn)行中提供比通過匹配stdout / stderr可以完成的更詳細(xì)的結(jié)果 runpytest()往堡。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • args - 要傳遞給的命令行參數(shù)pytest.main()
  • 插件 - (僅限關(guān)鍵字)pytest.main()實(shí)例應(yīng)使用的額外插件實(shí)例
    |
    | 返回: |
    一個(gè)HookRecorder實(shí)例
    |

返回運(yùn)行pytest in-process的結(jié)果,提供與self.runpytest()提供的類似的接口共耍。

運(yùn)行pytest內(nèi)聯(lián)或子進(jìn)程虑灰,具體取決于命令行選項(xiàng)“-runpytest”并返回a RunResult

從給定的命令行args返回一個(gè)新的pytest Config實(shí)例痹兜。
這將調(diào)用_pytest.config中的pytest引導(dǎo)代碼來創(chuàng)建一個(gè)新的_pytest.core.PluginManager并調(diào)用pytest_cmdline_parse掛鉤來創(chuàng)建一個(gè)新_pytest.config.Config實(shí)例穆咐。
如果plugins已經(jīng)填充,則應(yīng)該是要使用PluginManager注冊的插件模塊字旭。

返回新的pytest配置的Config實(shí)例对湃。
這會(huì)返回一個(gè)新_pytest.config.Config實(shí)例 parseconfig(),但也會(huì)調(diào)用pytest_configure掛鉤遗淳。

返回測試項(xiàng)目以獲得測試方法拍柒。
這會(huì)將源寫入python文件并在生成的模塊上運(yùn)行pytest的集合,返回所Request的函數(shù)名稱的測試項(xiàng)屈暗。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • source - 模塊源
  • funcname - 要為其返回測試項(xiàng)的測試函數(shù)的名稱
    |

返回從模塊收集的所有測試項(xiàng)目拆讯。
這會(huì)將源寫入python文件并在生成的模塊上運(yùn)行pytest的集合,返回其中包含的所有測試項(xiàng)养叛。

返回模塊集合節(jié)點(diǎn)source种呐。
這將寫入source文件makepyfile(),然后在其上運(yùn)行pytest集合一铅,返回測試模塊的集合節(jié)點(diǎn)陕贮。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • source - 要收集的模塊的源代碼
  • configargs - 要傳遞給的任何額外參數(shù) parseconfigure()
  • withinit - 是否也將__init__.py文件寫入同一目錄以確保它是一個(gè)包
    |

從模塊集合返回name的集合節(jié)點(diǎn)。
這將在模塊集合節(jié)點(diǎn)中搜索與給定名稱匹配的集合節(jié)點(diǎn)潘飘。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • modcol - 模塊集合節(jié)點(diǎn); 看到getmodulecol()
  • name - 要返回的節(jié)點(diǎn)的名稱
    |

調(diào)用subprocess.Popen肮之。
這會(huì)調(diào)用subprocess.Popen掉缺,確保當(dāng)前工作目錄在PYTHONPATH中。
你可能想要使用run()戈擒。

運(yùn)行帶參數(shù)的命令眶明。
使用subprocess.Popen運(yùn)行進(jìn)程保存stdout和stderr。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • args - 傳遞給<cite>subprocess.Popen()</cite>的參數(shù)序列
  • timeout - 超時(shí)和提升之后的秒數(shù) Testdir.TimeoutExpired
    |
    返回一個(gè)RunResult筐高。

使用sys.executable作為解釋器運(yùn)行python腳本搜囱。
返回一個(gè)RunResult

運(yùn)行python -c“command”柑土,返回一個(gè)RunResult蜀肘。

運(yùn)行pytest作為具有給定參數(shù)的子進(jìn)程。
添加到plugins列表中的所有插件都將使用-p命令行選項(xiàng)添加 稽屏。另外--basetemp用于將任何臨時(shí)文件和目錄放在帶有“runpytest-”前綴的編號(hào)目錄中扮宠,以避免與臨時(shí)文件和目錄的正常編號(hào)pytest位置沖突。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |

  • args - 傳遞給pytest子進(jìn)程的參數(shù)序列
  • timeout - 超時(shí)和提升之后的秒數(shù) Testdir.TimeoutExpired
    |
    返回一個(gè)RunResult狐榔。

使用pexpect運(yùn)行pytest坛增。
這確保使用正確的pytest并設(shè)置臨時(shí)目錄位置。
pexpect孩子被退回薄腻。

使用pexpect運(yùn)行命令收捣。
pexpect孩子被退回。

運(yùn)行命令的結(jié)果庵楷。
屬性:
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 懲戒: | 返回值 |
| 大綱: | 從stdout捕獲的行列表 |
| Errlines: | 從stderr捕獲的行列表 |
| 標(biāo)準(zhǔn)輸出: | LineMatcherstdout罢艾,用于stdout.str()重建stdout或常用stdout.fnmatch_lines() 方法 |
| 標(biāo)準(zhǔn)錯(cuò)誤: | LineMatcher stderr |
| 持續(xù)時(shí)間: | 持續(xù)時(shí)間(秒) |

從解析測試過程產(chǎn)生的終端輸出返回outcometring-> num的字典。

斷言在測試運(yùn)行的文本輸出中尽纽,指定的結(jié)果與相應(yīng)的數(shù)字一起出現(xiàn)(0表示未發(fā)生)昆婿。

靈活的文本匹配。
這是一個(gè)測試大文本(例如命令輸出)的便利類蜓斧。
構(gòu)造函數(shù)采用一系列行而沒有它們的尾隨換行符仓蛆,即 text.splitlines()

返回整個(gè)原始文本挎春。

使用任何順序在輸出中存在檢查行看疙。
使用檢查線條fnmatch.fnmatch。參數(shù)是必須以任何順序出現(xiàn)在輸出中的行列表直奋。

輸出中的檢查行使用re.match任何順序能庆。
參數(shù)是必須以任何順序出現(xiàn)在輸出中的行列表。

返回文本中給定行后面的所有行脚线。
給定的行可以包含glob通配符搁胆。

使用搜索匹配的行搜索捕獲的文本fnmatch.fnmatch
參數(shù)是必須匹配并且可以使用glob通配符的行列表。如果它們不匹配渠旁,則調(diào)用pytest.fail()攀例。匹配和不匹配也打印在標(biāo)準(zhǔn)輸出上。

使用搜索匹配的行搜索捕獲的文本re.match顾腊。
參數(shù)是必須匹配的行列表re.match粤铭。如果它們不匹配,則調(diào)用pytest.fail()杂靶。
匹配和不匹配也打印在標(biāo)準(zhǔn)輸出上梆惯。

再見

教程使用警告方法發(fā)出警告

返回WarningsRecorder記錄測試函數(shù)發(fā)出的所有警告的實(shí)例。
有關(guān)警告類別的信息吗垮,請參閱http://docs.python.org/library/warnings.html垛吗。

用于記錄引發(fā)警告的上下文管理器。
改編自<cite>warnings.catch_warnings</cite>烁登。

記錄的警告列表职烧。

彈出第一個(gè)錄制的警告,如果不存在則引發(fā)異常防泵。

清除錄制的警告列表。

每個(gè)記錄的警告都是一個(gè)例子warnings.WarningMessage蝗敢。
注意
RecordedWarning 在pytest 3.1中從普通類改為命名元組
注意
DeprecationWarning并且PendingDeprecationWarning區(qū)別對待; 請參閱確保代碼觸發(fā)棄用警告捷泞。

tmp_path

教程臨時(shí)目錄和文件

返回臨時(shí)目錄路徑對象,該對象對于每個(gè)測試函數(shù)調(diào)用是唯一的寿谴,創(chuàng)建為基本臨時(shí)目錄的子目錄锁右。返回的對象是一個(gè)pathlib.Path 對象。
注意
在python <3.6中讶泰,這是一個(gè)pathlib2.Path

tmp_path_factory

教程tmp_path_factoryFixtures
tmp_path_factory 實(shí)例有以下方法:

制作工廠管理的臨時(shí)目錄

返回基本臨時(shí)目錄咏瑟。

TMPDIR

教程臨時(shí)目錄和文件

返回臨時(shí)目錄路徑對象,該對象對于每個(gè)測試函數(shù)調(diào)用是唯一的痪署,創(chuàng)建為基本臨時(shí)目錄的子目錄码泞。返回的對象是py.path.local 路徑對象。

tmpdir_factory

教程'tmpdir_factory'Fixtures
tmpdir_factory 實(shí)例有以下方法:

創(chuàng)建基本臨時(shí)目錄的子目錄并將其返回狼犯。如果numbered余寥,通過添加大于任何現(xiàn)有的數(shù)字前綴來確保該目錄是唯一的。

向后compat裝飾器 _tmppath_factory.getbasetemp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悯森,一起剝皮案震驚了整個(gè)濱河市宋舷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓢姻,老刑警劉巖祝蝠,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡绎狭,警方通過查閱死者的電腦和手機(jī)细溅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坟岔,“玉大人谒兄,你說我怎么就攤上這事∩绺叮” “怎么了承疲?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸥咖。 經(jīng)常有香客問我燕鸽,道長,這世上最難降的妖魔是什么啼辣? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任啊研,我火速辦了婚禮,結(jié)果婚禮上鸥拧,老公的妹妹穿的比我還像新娘党远。我一直安慰自己,他們只是感情好富弦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布沟娱。 她就那樣靜靜地躺著,像睡著了一般腕柜。 火紅的嫁衣襯著肌膚如雪济似。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天盏缤,我揣著相機(jī)與錄音砰蠢,去河邊找鬼。 笑死唉铜,一個(gè)胖子當(dāng)著我的面吹牛台舱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潭流,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼柿赊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幻枉?” 一聲冷哼從身側(cè)響起碰声,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熬甫,沒想到半個(gè)月后胰挑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年瞻颂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豺谈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贡这,死狀恐怖茬末,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盖矫,我是刑警寧澤丽惭,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站辈双,受9級(jí)特大地震影響责掏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜湃望,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一换衬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧证芭,春花似錦瞳浦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至湃密,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間四敞,已是汗流浹背泛源。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忿危,地道東北人达箍。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像铺厨,于是被迫代替她去往敵國和親缎玫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容