一個小而全的Python專案示例

雷學委發表於2021-04-24

之前分享過幾篇Python的開發小作品,沒有過多提到專案組織。

本文展示一個常見的python專案結構。

Python的好處是程式碼很容易理解,而且語言層面簡潔。

但是就是因為太簡潔了,導致各種專案結構不一,本文演示一下學委常用的專案組織方式。

如下目錄所示

|-(根目錄)

|--requirements.txt  # 專案依賴庫

|--test_requirements.txt # 測試依賴庫

|--setup.py # 專案配置指令碼

|--python_sample #為程式碼所在package

|--tests # 測試程式碼目錄

其他檔案介紹

.gitignore #git類程式碼倉庫必備,用來忽略某些特定檔案的checkin

pyvenv.cfg & bin & lib # 由virtualenv 建立的

.coverage && htmlcov # 由pytest coverage 建立的

專案開發

pip install -r requirements.txt

pip install -r test-requirements.txt

安裝專案

python setup.py install

執行程式碼

python -m python_sample.demo #執行示例模組內的demo程式的main函式

執行測試程式碼

cd tests && pytest

檢視測試覆蓋率

pytest --cov=python_sample tests

pytest --cov=python_sample --cov-report=html

測試報告生成在htmlcov目錄內。

程式碼分析

程式demo.py

  • 定義了一個add函式,執行兩個引數的加法
  • 定義了一個main函式,接受引數變數
  • 結尾定義了程式的入口把引數傳遞給main函式

執行python_sample模組中的demo程式

測試程式碼解析

本文使用pytest的assert函式,它比unittest更加易用。

本文的一個簡單使用: assert 目標函式呼叫 比較符 結果,也就是下面的: assert add(1,1) == 2

後記

寫程式碼不寫測試就是流氓,或者不想讓別人使用。

這樣生成測試報告別人看到覆蓋率高,使用起來也更加放心。

對了,學委還有這個可以關注長期閱讀 =>雷學委趣味程式設計故事彙編 

或者=> 雷學委NodeJS愛好系列

持續學習持續開發,我是雷學委! 程式設計很有趣,關鍵是把技術搞透徹講明白。 創作不易,請多多支援,點贊收藏支援學委吧!

相關文章