pytest 測試實戰 pytest测试实战

布賴恩·奧肯 (Brian Okken)

買這商品的人也買了...

商品描述

pytest是動態編程語言Python專用的測試框架,它具有易於上手、功能強大、第三方插件豐富、效率高、可擴展性好、兼容性強等特點。
《pytest測試實戰》深入淺出地講解了pytest的使用方法,尤其是具有特色的fixture的用法。
作者通過豐富的測試實例,手把手教讀者編寫簡潔、易於維護的測試代碼和插件,讓你輕鬆掌握這個業界最受歡迎的Python測試工具。

目錄大綱

第1章 pytest入門 1
1.1 資源獲取 4
1.2 運行Pytest 5
1.3 運行單個測試用例 10
1.4 使用命令行選項 10
--collect-only選項 11
-k選項 11
-m選項 12
-x選項 13
--maxfail=num 15
-s與--capture=method 16
--lf(--last-failed)選項 16
--ff(--failed-first)選項 17
-v(--verbose)選項 17
-q(--quiet)選項 18
-l(--showlocals)選項 19
--tb=style選項 20
--duration=N選項 21
--version選項 22
-h(--help)選項 23
1.5 練習 24
1.6 預告 25

第2章 編寫測試函數 27
2.1 測試示例程式 27
本地安裝Tasks專案套裝程式 30
2.2 使用assert聲明 32
2.3 預期異常 35
2.4 測試函數的標記 36
完善冒煙測試 38
2.5 跳過測試 40
2.6 標記預期會失敗的測試 43
2.7 運行測試子集 45
單個目錄 45
單個測試檔/模組 46
單個測試函數 47
單個測試類 47
單個測試類中的測試方法 48
用測試名劃分測試集合 48
2.8 參數化測試 49
2.9 練習 56
2.10預告 57

第3章 pytest Fixture 59
3.1 通過conftest.py共用fixture 60
3.2 使用fixture執行配置及銷毀邏輯 61
3.3 使用--setup-show回溯fixture的執行過程 63
3.4 使用fixture傳遞測試資料 64
3.5 使用多個fixture66
3.6 指定fixture作用範圍 68
修改Tasks項目的fixture作用範圍 70
3.7 使用usefixtures指定fixture 73
3.8 為常用fixture添加autouse選項 74
3.9 為fixture重命名 75
3.10Fixture的參數化 77
3.11參數化Tasks項目中的fixture 80
3.12練習 83
3.13預告 83

第4章 內置Fixture 85
4.1 使用tmpdir和tmpdir_factory86
在其他作用範圍內使用臨時目錄 88
4.2 使用pytestconfig90
4.3 使用cache 92
4.4 使用capsys 100
4.5 使用monkeypatch102
4.6 使用doctest_namespace106
4.7 使用recwarn 109
4.8 練習 110
4.9 預告 111

第5章 插件 113
5.1 尋找插件 114
5.2 安裝插件 114
從PyPI安裝 114
從PyPI安裝指定版本 115
從.tar.gz或.whl檔安裝 115
從本地目錄安裝 115
從Git存儲倉庫安裝 116
5.3 編寫自己的插件 116
5.4 創建可安裝插件 121
5.5 測試插件 125
5.6 創建發佈包 129
通過共用目錄分發插件 130
通過PyPI發佈插件 130
5.7 練習 131
5.8 預告 131

第6章 配置 133
6.1 理解pytest的配置檔 133
用pytest --help查看ini檔選項 135
插件可以添加ini檔選項 135
6.2 更改默認命令行選項 136
6.3 註冊標記來防範拼寫錯誤136
6.4 指定pytest的最低版本號 138
6.5 指定pytest忽略某些目錄 138
6.6 指定測試目錄 139
6.7 更改測試搜索的規則 141
6.8 禁用XPASS 142
6.9 避免檔案名衝突 143
6.10練習 145
6.11 預告 145

第7章 pytest與其他工具的搭配使用147
7.1pdb:調試失敗的測試用例 147
7.2coverage.py:判斷測試覆蓋了多少代碼 151
7.3mock:替換部分系統 155
7.4tox:測試多種配置 162
7.5Jenkins CI:讓測試自動化 166
7.6unittest:用pytest運行歷史遺留測試用例 173
7.7 練習 179
7.8 預告 180

附錄A 虛擬環境 181
附錄B Pip 183
附錄C 常用插件 187

C.1 改變測試流程的插件 187
pytest-repeat:重複運行測試 187
pytest-xdist:並行運行測試 189
pytest-timeout:為測試設置時間限制190

C.2 改善輸出效果的插件 191
pytest-instafail:查看錯誤的詳細資訊191
pytest-sugar:顯示色彩和進度條 192
pytest-emoji:為測試增添一些樂趣 193
pytest-html:為測試生成HTML報告 195

C.3 靜態分析用的插件 197
pytest-pycodestyle和pytest-pep8:Python代碼風格檢查 197
pytest-flake8:更多的風格檢查 197

C.4Web開發用的插件 198
pytest-selenium:借助流覽器完成自動化測試198
pytest-django:測試Django應用 198
pytest-flask:測試Flask應用 199

附錄D 打包和發佈Python專案 201
D.1 創建可安裝的模組 201
D.2 創建可安裝的包 203
D.3 創建源碼發佈包和Wheel檔 205
D.4 創建可以從PyPI安裝的包 209

附錄E xUnit Fixture 211
E.1xUnit Fixture的語法 211
E.2 混合使用pytestFixture和xUnit Fixture 214
E.3xUnit Fixture的限制 215

索引 216