測開入門篇《環境管理、編碼規範、專案結構》

清菡發表於2020-12-13

堅持原創輸出,點選藍字關注我吧

作者:清菡
部落格:oschina、雲+社群、知乎等各大平臺都有。

目錄

  • 一、前提準備
  • 二、虛擬環境
    • 1.virtualenv的安裝和應用
    • 2.pipenv的安裝和使用
    • 3.匯出虛擬環境為requirements.txt檔案
    • 4.pipenv的相關使用命令
    • 5.需要在虛擬環境中起專案
  • 三、Python程式碼規範
  • 四、工程結構化

測試平臺是做什麼的?

測試開發研發的測試平臺是給點點點的人用的,可以幫助我們做自動化測試、用例管理、報表生成等,提高測試工作效率。

例如用市面上的postman做的一些測試,不符合公司專案的實際。但是自動化測試平臺可以根據公司實際專案需求做定製化開發。

一、前提準備

Python環境:python3.7是python3裡面目前最穩定的一個版本,3以上的版本都沒有問題。

電腦:Windows10家庭版

二、虛擬環境

Python虛擬環境的主要目的是:為了給不同的工程建立互相獨立的執行環境。在虛擬環境下,每一個工程都有自己的依賴包,而與其它的工程無關。

不同的虛擬環境中同一個包可以有不同的版本。並且,虛擬環境的數量沒有限制,我們可以輕鬆地用virtualenv或pipenv等工具來建立多個虛擬環境。

圖片來自網路
圖片來自網路

1.virtualenv的安裝和應用

(windows)安裝步驟:

1.pip 安裝 virtualenv

pip install virtualenv

2.pip安裝虛擬環境管理包

pip install virtualenvwrapper-win(這個是windows下的管理工具)

注意:如果是用的mac或者在linux上安裝,直接pip install virtualenvwrapper即可。

3.建立一個存放虛擬環境的目錄(建議命名為.env或者.virtualenv,也可以叫其它名字,注意不要中文命名)。

4.配置環境變數(變數名:WORKON_HOME,值:上面建立的目錄路徑)

檢視電腦中的虛擬環境,輸入workon,會顯示所有的虛擬環境:

建立虛擬環境有一些命令,virtualenv的使用命令:

wokon 列出所有的虛擬環境
workon[name] 進入指定的虛擬環境
deactivate 退出當前的虛擬環境
mkvirtualenv[name] 建立虛擬環境
rmvirtualenv[name] 刪除虛擬環境

包安裝:

虛擬環境中,安裝對應的依賴包,進入虛擬環境直接使用pip install進行安裝。

mkvirtualenv -p python3 qinghan

如果電腦裡只安裝了python3,那麼直接輸入mkvirtualenv qinghan

後面你看到多了這個虛擬環境名,建立虛擬環境後會自動進入虛擬環境裡面。

先輸入exit();再輸入deactivate

進入某個虛擬環境,可以這樣輸入:例如workon qinghan

刪除某個虛擬環境,可以這樣輸入:rmvirtualenv tester

輸入pip list可檢視當前電腦已安裝的python相關的依賴包。

檢視虛擬環境中有多少依賴包:

先輸入workon qinghan再輸入pip list

在qinghan這個虛擬環境中安裝一個django包:

pip install django

這個包在其它虛擬環境中是看不到的,獨立隔開的。

解除安裝包pip uninstall django

使用virtualenv這個管理工具有個缺點:

安裝django的時候,會把django相關的依賴包都安裝下來。安裝django的時候自帶安裝的pytzsqlparse包,解除安裝的時候並沒有解除安裝。

2.pipenv的安裝和使用

pipenv整合了pip,virtualenv兩者的功能,且完善了兩者的一些缺陷。

過去用virtualenv管理requirements.txt檔案可能會有問題,Pipenv使用Pipfile和Pipfile.lock。

Pipfile檔案用來記錄專案依賴包列表,Pipfile.lock檔案記錄了固定版本的詳細依賴包列表,檢視依賴關係是十分方便。

支援python2和python3。支援mac,win,linux,在各個平臺的命令都是一樣的。各個地方使用了雜湊校驗,無論安裝還是解除安裝包都十分安全。

安裝:pip install pipenv

建立虛擬環境

第一步建立資料夾 mkdir py3env
第二步進入資料夾 cd py3env
第三步初始化虛擬環境 pipenv install

建立好虛擬環境後會生成:一個Pipfile檔案和一個Pipfile.lock。

專案提交時,可將Pipfile檔案和Pipfile.lock檔案一併提交,待其他開發克隆下載。

Pipfile.lock檔案是通過hash演算法將包的名稱和版本,及依賴關係生成雜湊值,可以保證包的完整性。

Pycharm會自動定位到當前工程的路徑下面:

我這裡是前面已經安裝過了。裝好之後,不需要配置環境變數,直接就可以用了。

在工程裡建立虛擬環境,直接在工程裡面輸入pipenv install

這裡預設的是python37,所以使用預設的python37直譯器建立虛擬環境。

pipenv管理模組和包

在虛擬環境中安裝模組或者包 pipenv install 包名(注意在當前專案路徑下執行以上命令)

通過–-dev指明只安裝在開發環境中(開發環境是你當前開發的環境,生產環境是上線部署的實際環境)

pipenv install requests --dev

安裝包記錄是在[dev-packages]部分,或是[packages]部分。

在安裝時,指定–-dev引數,則只安裝[dev-packages]下的包;若安裝時不指定–-dev引數,只會安裝[packages]包下面的模組。

解除安裝虛擬環境的模組包 pipenv uninstall 包名
檢視安裝包及依賴關係 pipenv graph
生成requirements.txt檔案 pipenv lock -r --dev > requirements.txt
通過requirements.txt安裝環境 pipenv install -r requirements.txt

pipenv install有3個作用:

1.當前路徑下不存在虛擬環境,它就建立虛擬環境。

2.pipenv install 相關模組名,比如pipenv install requests那麼它就是安裝一個requests模組的意思。

3.url = "https://pypi.org/simple"是國外源,需換成Python國內源:清華大學源https://pypi.tuna.tsinghua.edu.cn/simple

現在安裝個包:pipenv install requests

安裝的時候,會預設把安裝的包記錄在[packages]下面:

如果想安裝某個包只想在開發環境下用,不想放在[packages]下面,可以放在[dev-packages]下面,可通過--dev指定一下:

一個Pipfile檔案和一個Pipfile.lock這兩個檔案,是用來記錄當前環境下的相關的依賴包的,以及在伺服器上恢復環境用的。

Pipfile.lock這個檔案記錄的更完整,比如在虛擬環境中安裝了requests了,但是requests有依賴其它的包嗎?那就記錄在Pipfile.lock檔案裡面。Pipfile.lock這個檔案不可隨意修改!

Pipfile.lock檔案這個記錄的很準確很詳細:

比如在這個工程下開發了一個專案,那麼接下來要把這個專案部署到伺服器裡面,Pipfile.lock檔案和專案程式碼一起傳到伺服器上面去。

在伺服器上通過Pipfile.lock檔案可以恢復當前開發的環境,通過對應的命令可以進行恢復。

在哪個路徑下執行pipenv這個命令,那麼就預設在哪個路徑下面建立虛擬環境。

Pipfile檔案中這裡是可以修改的:

安裝的包,要在伺服器上用的話,那就裝在[packages]裡,如果只是開發環境用的話就裝在[dev-packages]

= "*" 這個不用管什麼意思。

要在class_01day資料夾裡面再建立一個虛擬環境,把Pipfile檔案和Pipfile.lock檔案複製過來。把專案上傳到伺服器的時候,同樣也把這2個檔案拿到伺服器裡面來。

比如伺服器下面的工程是class_01day,是伺服器下面專案的一個路徑。

在伺服器下面恢復當前程式碼執行的環境,進入路徑下面,執行命令pipenv install建立個虛擬環境就可以了。

注意:不是隻複製這2個檔案就行了啊。要把專案程式碼和這2個檔案一起傳過去。通過這2個檔案可以把開發時候的所有的環境恢復到伺服器上面。

檢視當前虛擬環境下已經安裝好的依賴包:

pipenv graph

開發環境裡面的包是不會恢復進去的。

之前在test_01資料夾下的Pipfile檔案裡手動新增的flask = "*"

在把這2個檔案複製到python_ck01資料夾下,恢復的時候會自動化安裝[packages]下面的包。

也可以把[dev-packages]的包恢復進來,輸入命令pipenv install --dev

pipenv這個工具比virtualenv強大一些。pipenv是對virtualenv的一個封裝。

在環境裡如果要解除安裝相關的依賴包,例如解除安裝requestsrequests下面有4個相關的依賴包。

這裡解除安裝requests,會把requests下面依賴的包也會進行解除安裝。而virtualenv解除安裝的時候只會解除安裝requestsrequests對應的依賴它是不會解除安裝的。

解除安裝命令:pipenv uninstall requests

一個虛擬環境只能裝一個requests

requests和依賴包的關係,requests是依賴這些模組實現的:

只能通過graph這個看,不能通過json檔案看。

解除安裝requests後,它的相關依賴是儲存下來了,這些包掉到外面來。

但是將這2個檔案拷貝到伺服器裡面去,在恢復的時候,那麼它所依賴的包是不會恢復進去的。

如果使用virtualenv這個工具,virtualenv也可以把虛擬環境匯出來。

比如把requests解除安裝了,用virtualenv匯出來的相關環境,去伺服器上進行恢復的時候,requests雖然沒有了,但是requests下面的依賴包也會恢復進去。

匯出virtualenv相關的依賴包,可以匯出一個requirements.txt檔案,用的virtualenv肯定有這個檔案。

3.匯出虛擬環境為requirements.txt檔案

requirements.txt檔案,裡面記錄了當前程式的所有依賴包及版本號。

其作用是用來在另一個環境上重新構建專案所需要的執行環境依賴。

匯出當前環境到requirements.txt pip freeze > requirements.txt
使用requirements.txt恢復環境 pip install -r requirements.txt

拿到這個檔案,也可以恢復到伺服器上去。

pipenv可以通過Pipfile和Pipfile.lock檔案進行環境恢復。也可以通過requirements.txt進行環境恢復。

4.pipenv的相關使用命令

pipenv –rm 刪除虛擬環境
pipenv –where 列出本地工程路徑
pipenv –venv 列出虛擬環境路徑
pipenv –py 顯示Python直譯器資訊
pipenv graph 檢視包依賴
pipenv lock 生成lock檔案
pipenv –rm 刪除虛擬環境
pipenv shell 直接進入虛擬環境
exit 退出虛擬環境

pipenv是對virtualenv的封裝。pipenv的底層還是virtualenv和pip實現的。 pipenv整合了virtualenv和pip兩個工具。

virtualenv只能通過requirements.txt進行環境恢復。

通過virtualenv,不用看當前所在的路徑,通過命令操作所有的虛擬環境。

通過pipenv,這個命令只能操作當前所在目錄下的虛擬環境。

刪除完虛擬環境,Pipfile和Pipfile.lock檔案以及資料夾不會被刪除,需要我們手動來刪除。

通過virtualenv建立的可以這樣刪除:

rmvirtualenv fff

通過pipenv --where列出當前虛擬環境所在的目錄。

虛擬環境是存放在virtualenv下面的。檢視當前虛擬環境存放在哪,輸入命令pipenv --venv

解除安裝了某些包,可以通過pipenv lock這個命令重新生成lock檔案。

現在這個lock檔案是同步生成的。如果把lock檔案刪除了,可以通過這個命令生成lock檔案。

5.需要在虛擬環境中起專案

如果沒進入虛擬環境,就沒有相關的依賴包,啟動專案就啟動不了。

三、Python程式碼規範

1.pep8(python程式碼樣式規範)

文件地址(中文):

https://blog.csdn.net/ratsniper/article/details/78954852

2.pep257 (python文件字串相關的約定):

文件地址:

https://github.com/qiuxiang/pep/blob/master/peps/257.md

3.pep20(python程式碼的理念):

文件地址:

https://www.python.org/dev/peps/pep-0020/

重點:

圖片來自網路
圖片來自網路

調整程式碼格式:Ctrl+Alt+L

註釋:

圖片來自網路
圖片來自網路
圖片來自網路
圖片來自網路

模組和包相關規範:

圖片來自網路
圖片來自網路

命名規範:

圖片來自網路
圖片來自網路

四、工程結構化

程式碼要寫得簡潔明瞭,專案裡面的結構也得簡潔明瞭,別人點開專案檔案就知道哪個檔案裡面放的什麼東西。

結構介紹:

圖片來自網路
圖片來自網路

一個專案裡肯定有其它的資料夾,但是一個專案裡有這些資料夾,顯得規範一些,哈哈哈。


公眾號 "清菡軟體測試" 首發,更多原創文章:清菡軟體測試 105+原創文章,歡迎關注、交流,禁止第三方擅自轉載。

相關文章