目錄:
- 安裝及入門
- 使用和調(diào)用方法
- 原有TestSuite使用方法
- 斷言的編寫和報(bào)告
- Pytest fixtures:清晰 模塊化 易擴(kuò)展
- 使用Marks標(biāo)記測試用例
- Monkeypatching/對模塊和環(huán)境進(jìn)行Mock
- 使用tmp目錄和文件
- 捕獲stdout及stderr輸出
- 捕獲警告信息
- 模塊及測試文件中集成doctest測試
- skip及xfail: 處理不能成功的測試用例
- Fixture方法及測試用例的參數(shù)化
- 緩存: 使用跨執(zhí)行狀態(tài)
- unittest.TestCase支持
- 運(yùn)行Nose用例
- 經(jīng)典xUnit風(fēng)格的setup/teardown
- 安裝和使用插件
- 插件編寫
- 編寫鉤子(hook)方法
- 運(yùn)行日志
- API參考
- 優(yōu)質(zhì)集成實(shí)踐
- 片狀測試
- Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
- 配置選項(xiàng)
- 示例及自定義技巧
- 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可以使用return
或yield
語句為測試函數(shù)提供它們的值纬纪。無論測試結(jié)果如何,yield
在yield
語句作為拆卸代碼執(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
/ loads
API 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)容作為帶有out
和err
字符串屬性的namedtuple |
暫時(shí)禁用“with”塊內(nèi)的捕獲足陨。
capsysbinary
教程:捕獲stdout / stderr輸出嫂粟。
啟用字節(jié)捕獲寫入sys.stdout
和sys.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輸出宽涌。
允許寫的文字捕捉到文件描述符1
和2
。
捕獲的輸出通過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é)捕獲文件描述符1
和2
。
捕獲的輸出通過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è)autouse
Fixtures一起使用:
@pytest.fixture(autouse=True)
def add_np(doctest_namespace):
doctest_namespace["np"] = numpy
有關(guān)更多詳細(xì)信息:'doctest_namespace'Fixtures。
Request
教程:根據(jù)命令行選項(xiàng)將不同的值傳遞給測試函數(shù)枉圃。
該request
Fixtures是一個(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ù): | when(str) - 從哪個(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ù): |
- level(int) - 記錄器到級(jí)別司志。
-
logger(str) - 更新級(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ù): |
猴補(bǔ)丁
教程:Monkeypatching / mocking模塊和環(huán)境压固。
返回的monkeypatch
fixture提供了這些輔助方法來修改對象球拦,字典或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í)例焚刚。
monkeypatch
Fixtures返回的對象保留了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ā))钮糖。
刪除屬性name
的target
梅掠,默認(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è)置name
為value
怒炸。如果prepend
是字符带饱,請讀取當(dāng)前環(huán)境變量值并value
在prepend
字符旁邊添加前綴。
name
從環(huán)境中刪除阅羹。如果不存在則引發(fā)KeyError勺疼。
如果raising
設(shè)置為False,則在缺少環(huán)境變量時(shí)不會(huì)引發(fā)異常捏鱼。
前置path
到sys.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本身的工具拓颓。
這是基于tmpdir
Fixtures语婴,但提供了許多方法,有助于測試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ù): |
- ext(str) - 文件應(yīng)使用的擴(kuò)展名,包括點(diǎn)儿奶,例如<cite>.py</cite>框往。
- args(list* [ [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ù): |
-
config -
_pytest.config.Config
instance盼产,查看parseconfig()
和parseconfigure()
創(chuàng)建配置 -
arg -
py.path.local
文件的一個(gè)實(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)輸出: | LineMatcher
stdout罢艾,用于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)輸出上梆惯。
再見
返回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