vault backup: 2025-01-22 15:16:48
This commit is contained in:
		
							
								
								
									
										52
									
								
								.obsidian/workspace.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.obsidian/workspace.json
									
									
									
									
										vendored
									
									
								
							| @ -20,8 +20,23 @@ | |||||||
|               "icon": "lucide-file", |               "icon": "lucide-file", | ||||||
|               "title": "{Note} Poetry" |               "title": "{Note} Poetry" | ||||||
|             } |             } | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             "id": "da4efdc0e3adde70", | ||||||
|  |             "type": "leaf", | ||||||
|  |             "state": { | ||||||
|  |               "type": "markdown", | ||||||
|  |               "state": { | ||||||
|  |                 "file": "組織/EverfortuneAI/{Note} Pytest.md", | ||||||
|  |                 "mode": "source", | ||||||
|  |                 "source": true | ||||||
|  |               }, | ||||||
|  |               "icon": "lucide-file", | ||||||
|  |               "title": "{Note} Pytest" | ||||||
|             } |             } | ||||||
|         ] |           } | ||||||
|  |         ], | ||||||
|  |         "currentTab": 1 | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         "id": "97c43f9093922695", |         "id": "97c43f9093922695", | ||||||
| @ -40,8 +55,23 @@ | |||||||
|               "icon": "lucide-file", |               "icon": "lucide-file", | ||||||
|               "title": "{Note} Poetry" |               "title": "{Note} Poetry" | ||||||
|             } |             } | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             "id": "60971798df1781bf", | ||||||
|  |             "type": "leaf", | ||||||
|  |             "state": { | ||||||
|  |               "type": "markdown", | ||||||
|  |               "state": { | ||||||
|  |                 "file": "組織/EverfortuneAI/{Note} Pytest.md", | ||||||
|  |                 "mode": "source", | ||||||
|  |                 "source": false | ||||||
|  |               }, | ||||||
|  |               "icon": "lucide-file", | ||||||
|  |               "title": "{Note} Pytest" | ||||||
|             } |             } | ||||||
|         ] |           } | ||||||
|  |         ], | ||||||
|  |         "currentTab": 1 | ||||||
|       } |       } | ||||||
|     ], |     ], | ||||||
|     "direction": "vertical" |     "direction": "vertical" | ||||||
| @ -113,7 +143,7 @@ | |||||||
|             "state": { |             "state": { | ||||||
|               "type": "backlink", |               "type": "backlink", | ||||||
|               "state": { |               "state": { | ||||||
|                 "file": "組織/EverfortuneAI/{Note} Poetry.md", |                 "file": "組織/EverfortuneAI/{Note} Pytest.md", | ||||||
|                 "collapseAll": false, |                 "collapseAll": false, | ||||||
|                 "extraContext": false, |                 "extraContext": false, | ||||||
|                 "sortOrder": "alphabetical", |                 "sortOrder": "alphabetical", | ||||||
| @ -123,7 +153,7 @@ | |||||||
|                 "unlinkedCollapsed": true |                 "unlinkedCollapsed": true | ||||||
|               }, |               }, | ||||||
|               "icon": "links-coming-in", |               "icon": "links-coming-in", | ||||||
|               "title": "{Note} Poetry 的反向連結" |               "title": "{Note} Pytest 的反向連結" | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|           { |           { | ||||||
| @ -132,12 +162,12 @@ | |||||||
|             "state": { |             "state": { | ||||||
|               "type": "outgoing-link", |               "type": "outgoing-link", | ||||||
|               "state": { |               "state": { | ||||||
|                 "file": "組織/EverfortuneAI/{Note} Poetry.md", |                 "file": "組織/EverfortuneAI/{Note} Pytest.md", | ||||||
|                 "linksCollapsed": false, |                 "linksCollapsed": false, | ||||||
|                 "unlinkedCollapsed": true |                 "unlinkedCollapsed": true | ||||||
|               }, |               }, | ||||||
|               "icon": "links-going-out", |               "icon": "links-going-out", | ||||||
|               "title": "{Note} Poetry 的對外連結" |               "title": "{Note} Pytest 的對外連結" | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|           { |           { | ||||||
| @ -159,10 +189,10 @@ | |||||||
|             "state": { |             "state": { | ||||||
|               "type": "outline", |               "type": "outline", | ||||||
|               "state": { |               "state": { | ||||||
|                 "file": "組織/EverfortuneAI/{Note} Poetry.md" |                 "file": "組織/EverfortuneAI/{Note} Pytest.md" | ||||||
|               }, |               }, | ||||||
|               "icon": "lucide-list", |               "icon": "lucide-list", | ||||||
|               "title": "{Note} Poetry 的大綱" |               "title": "{Note} Pytest 的大綱" | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|           { |           { | ||||||
| @ -193,10 +223,12 @@ | |||||||
|       "obsidian-git:Open Git source control": false |       "obsidian-git:Open Git source control": false | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "active": "23dfe70ddddd299f", |   "active": "da4efdc0e3adde70", | ||||||
|   "lastOpenFiles": [ |   "lastOpenFiles": [ | ||||||
|     "組織/EverfortuneAI/{Note} Nox.md", |  | ||||||
|     "組織/EverfortuneAI/{Note} Poetry.md", |     "組織/EverfortuneAI/{Note} Poetry.md", | ||||||
|  |     "組織/EverfortuneAI/{Note} Pytest.md", | ||||||
|  |     "組織/EverfortuneAI/resources/test_your_code.png", | ||||||
|  |     "組織/EverfortuneAI/{Note} Nox.md", | ||||||
|     "組織/EverfortuneAI/{Note} Packaging Python Project.md", |     "組織/EverfortuneAI/{Note} Packaging Python Project.md", | ||||||
|     "組織/EverfortuneAI/resources/poetry.png", |     "組織/EverfortuneAI/resources/poetry.png", | ||||||
|     "README.md", |     "README.md", | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								組織/EverfortuneAI/resources/test_your_code.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								組織/EverfortuneAI/resources/test_your_code.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 576 KiB | 
							
								
								
									
										36
									
								
								組織/EverfortuneAI/{Note} Pytest.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								組織/EverfortuneAI/{Note} Pytest.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | --- | ||||||
|  | author: deng | ||||||
|  | date: "20250122" | ||||||
|  | category: Note | ||||||
|  | tags: | ||||||
|  |   - Python | ||||||
|  |   - UnitTest | ||||||
|  |   - Pytest | ||||||
|  |   - Note | ||||||
|  | --- | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | - Abstract | ||||||
|  | 	- [Pytest](https://docs.pytest.org/en/stable/) is a popular testing framework for Python known for its simplicity. It breaks away from the class-based structure, offering a more flexible and intuitive approach. (Yep. More Pythonic than [unittest](https://docs.python.org/3/library/unittest.html)!) | ||||||
|  | - Resources | ||||||
|  | 	- 心法 | ||||||
|  | 		- [為什麼你應該寫單元測試——《Python 工匠》筆記 ](https://blog.kyomind.tw/python-craftsman-02/) - Code and Me | ||||||
|  | 	- 入門 | ||||||
|  | 		- [Python 測試入門 - 開始使用 PyTest](https://blog.tzing.tw/posts/python-testing-pytest-08de903a) - 拾遺 | ||||||
|  | 		- [# Python 測試入門 - PyTest Fixture](https://blog.tzing.tw/posts/python-testing-pytest-fixture-91b547f2) - 拾遺 | ||||||
|  | 		- [7 個實用的 pytest plugins](https://myapollo.com.tw/blog/7-useful-pytest-plugins/) - MyApollo | ||||||
|  | 		- [Pytest 101 - 給 Python 開發者的測試入門 (3) - 圖解 Mock & 測試框架語法整理](https://minglunwu.com/notes/2023/pytest_101_3.html/) - Byte and Ink | ||||||
|  | 		- [How To Test Python Exception Handling Using Pytest Assert (A Simple Guide)](https://pytest-with-eric.com/introduction/pytest-assert-exception/) - Pytest with Eric | ||||||
|  | 	- 更上一層樓 | ||||||
|  | 		- [13 Proven Ways To Improve Test Runtime With Pytest](https://pytest-with-eric.com/pytest-advanced/pytest-improve-runtime/) - Pytest with Eric | ||||||
|  | 			- 對於進階者相當推薦Eric的[部落格](https://pytest-with-eric.com/),有相當多的情境可以參考 | ||||||
|  | - Note | ||||||
|  | 	- 雖不追求100%測試覆蓋率,但我在寫測試時都會裝上[Pytest-cov](https://pytest-cov.readthedocs.io/en/latest/readme.html)插件以掌握專案當下覆蓋率的情況 | ||||||
|  | 		- 透過``--cov``引數調用,例如``pytest --cov=./src ./tests`` | ||||||
|  | 	- 專案越肥大通常測試會花上更多時間,搭配[Pytest-xdist](https://pytest-xdist.readthedocs.io/en/stable/distribution.html)插件可簡單地將測試平行化以節省寶貴時間 | ||||||
|  | 		- 透過``-n``引數調用,例如``pytest -n auto`` | ||||||
|  | 		- 善用pytest namespace可以將某些資料暫存給後續測試使用,進一步節省測試時間 | ||||||
|  | 		- 若測試物件之間有依賴性,可使用xdist_group_mark將物件分群,同群的物件將會被同一行程執行 | ||||||
|  | 		- 平行化通常伴隨更多資源的消耗,使用時需小心~ | ||||||
|  | 	- Pytest也支援[pyproject.toml](https://docs.pytest.org/en/stable/reference/customize.html#pyproject-toml)進行配置 | ||||||
		Reference in New Issue
	
	Block a user