Pytest官方教程-08-使用tmp目錄和文件

目錄:

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

使用tmp目錄和文件

tmp_path裝置

3.9版本新功能
你可以使用tmp_path 在臨時目錄根目錄中創(chuàng)建一個獨立的臨時目錄以供測試調(diào)用。

tmp_path是一個pathlib/pathlib2.Path對象。以下是測試用法的示例:

# test_tmp_path.py文件內(nèi)容
import os

CONTENT = u"content"

def test_create_file(tmp_path):
    d = tmp_path / "sub"
    d.mkdir()
    p = d / "hello.txt"
    p.write_text(CONTENT)
    assert p.read_text() == CONTENT
    assert len(list(tmp_path.iterdir())) == 1
    assert 0

運行這個,我們可以看到,除了assert 0這一行门驾,其他斷言都正常測試通過:

$ pytest test_tmpdir.py
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
rootdir: $REGENDOC_TMPDIR, inifile:
collected 1 item

test_tmpdir.py F                                                     [100%]

================================= FAILURES =================================
_____________________________ test_create_file _____________________________

tmpdir = local('PYTEST_TMPDIR/test_create_file0')

    def test_create_file(tmpdir):
        p = tmpdir.mkdir("sub").join("hello.txt")
        p.write("content")
        assert p.read() == "content"
        assert len(tmpdir.listdir()) == 1
>       assert 0
E       assert 0

test_tmpdir.py:7: AssertionError
========================= 1 failed in 0.12 seconds =========================

'tep_dir_factory' 裝置

2.8版本新功能
tmpdir_factory是一個session范圍的fixture,可用于從任何其他測試用例及fixture中創(chuàng)建任意臨時目錄。

例如,假設你的測試套件需要使用程序動態(tài)生成在本地磁盤上的一個大圖片隆圆,你可以整個測試session中只生成一次以節(jié)省時間,而不是為每個用例都在自己的tmpdir中計算并生成一次:

# conftest.py文件內(nèi)容
import pytest


@pytest.fixture(scope="session")
def image_file(tmpdir_factory):
    img = compute_expensive_image()
    fn = tmpdir_factory.mktemp("data").join("img.png")
    img.save(str(fn))
    return fn


# contents of test_image.py
def test_histogram(image_file):
    img = load_image(image_file)
    # 計算和測試histogram

有關(guān)詳細信息翔烁,請參閱tmpdir_factory API渺氧。

默認臨時目錄根目錄

默認情況下,臨時目錄創(chuàng)建為系統(tǒng)臨時目錄的子目錄蹬屹。 基本名稱將是pytest-數(shù)字猎唁,其中數(shù)字將隨著每次測試運行而遞增。 此外贞瞒,第3個以后的臨時目錄會被刪除。

你可以如下所示兔毒,修改默認的臨時目錄設置:

pytest --basetemp=mydir

在本地計算機上分發(fā)測試時,pytest會為子進程配置臨時目錄根目錄,以便所有臨時數(shù)據(jù)都落在單個每個測試運行的臨時目錄根目錄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末管搪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子消别,更是在濱河造成了極大的恐慌抛蚤,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寻狂,死亡現(xiàn)場離奇詭異,居然都是意外死亡朋沮,警方通過查閱死者的電腦和手機蛇券,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來樊拓,“玉大人纠亚,你說我怎么就攤上這事〗钕模” “怎么了蒂胞?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長条篷。 經(jīng)常有香客問我骗随,道長,這世上最難降的妖魔是什么赴叹? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任鸿染,我火速辦了婚禮,結(jié)果婚禮上乞巧,老公的妹妹穿的比我還像新娘涨椒。我一直安慰自己,他們只是感情好绽媒,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布蚕冬。 她就那樣靜靜地躺著,像睡著了一般是辕。 火紅的嫁衣襯著肌膚如雪囤热。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天免糕,我揣著相機與錄音赢乓,去河邊找鬼忧侧。 笑死,一個胖子當著我的面吹牛牌芋,可吹牛的內(nèi)容都是我干的蚓炬。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼躺屁,長吁一口氣:“原來是場噩夢啊……” “哼肯夏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起犀暑,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤驯击,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后耐亏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徊都,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年广辰,在試婚紗的時候發(fā)現(xiàn)自己被綠了暇矫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡择吊,死狀恐怖李根,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情几睛,我是刑警寧澤房轿,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站所森,受9級特大地震影響囱持,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜必峰,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一洪唐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吼蚁,春花似錦凭需、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旗国,卻和暖如春枯怖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背能曾。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工度硝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肿轨,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓蕊程,卻偏偏與公主長得像椒袍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子藻茂,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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