成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Flask Web 測試驅(qū)動開發(fā)最佳實(shí)踐 之 開篇

fnngj / 2807人閱讀

摘要:測試驅(qū)動開發(fā)簡稱,是一種軟件開發(fā)過程中的應(yīng)用方法,,由極限編程中倡導(dǎo),以其倡導(dǎo)先寫測試程序,然后編碼實(shí)現(xiàn)其功能得名。測試驅(qū)動著整個開發(fā)過程首先,驅(qū)動代碼的設(shè)計(jì)和功能的實(shí)現(xiàn)其后,驅(qū)動代碼的再設(shè)計(jì)和重構(gòu)。

前言

一直都有聽到 TDD 測試驅(qū)動開發(fā)的開發(fā)方式,之前看了一本 《Python Web開發(fā)測試驅(qū)動方法》,這本書基于 Django 框架嚴(yán)格遵循測試驅(qū)動開發(fā)(TDD)的方式去實(shí)現(xiàn)一個簡單網(wǎng)站。一直都很想嘗試這種方式進(jìn)行一次簡單的TDD實(shí)踐,這篇文章就使用我之前的 仿V2EX 網(wǎng)站項(xiàng)目來一步步實(shí)踐。

TDD

測試驅(qū)動開發(fā)(Test-driven development)簡稱 TDD,是一種軟件開發(fā)過程中的應(yīng)用方法,,由極限編程中倡導(dǎo),以其倡導(dǎo)先寫測試程序,然后編碼實(shí)現(xiàn)其功能得名。

測試驅(qū)動開發(fā)是戴兩頂帽子思考的開發(fā)方式:先戴上實(shí)現(xiàn)功能的帽子,在測試的輔助下,快速實(shí)現(xiàn)其功能;再戴上重構(gòu)的帽子,在測試的保護(hù)下,通過去除冗余的代碼,提高代碼質(zhì)量。測試驅(qū)動著整個開發(fā)過程:首先,驅(qū)動代碼的設(shè)計(jì)和功能的實(shí)現(xiàn);其后,驅(qū)動代碼的再設(shè)計(jì)和重構(gòu)。以上概念來源于維基百科

需求分析

相信各位讀者都已經(jīng)知道 V2EX 社區(qū),首先一個技術(shù)社區(qū)需要有以下幾個功能:

話題:發(fā)布話題、修改話題、追加話題等

節(jié)點(diǎn):話題的歸類

用戶:標(biāo)識你在社區(qū)的身份

評論:評論話題,技術(shù)社區(qū)最主要的功能

用戶關(guān)系:用戶之間能相互關(guān)注

以上幾個功能對一個技術(shù)社區(qū)來說是十分重要的,本文是要使用 TDD 方式實(shí)現(xiàn)這樣一個社區(qū),因此在這里介紹一下

編寫測試

首先測試驅(qū)動開發(fā)的第一步就是:編寫測試。上一節(jié)已經(jīng)提到了一些需求,這里就根據(jù)這些需求寫一個簡單的測試,并設(shè)法讓其通過。首先是用戶功能,一個用戶需要有注冊、驗(yàn)證、登錄等步驟后才能真正在社區(qū)中發(fā)布話題等功能。

本文使用 GitHub 來托管項(xiàng)目代碼,這里新建一個項(xiàng)目名稱叫 v2ex, 初始結(jié)構(gòu)如下:

v2ex
├── LICENSE
└── README.md

然后新建一個 tests 文件夾,用于保存測試代碼,為什么要建 tests 文件夾,而不是在根路徑下建個測試文件就好了,這不是良好的項(xiàng)目結(jié)構(gòu),本文根據(jù)項(xiàng)目最佳結(jié)構(gòu)來實(shí)踐。然后在tests 文件夾下新建測試文件test_user.py, 下面是項(xiàng)目的當(dāng)前結(jié)構(gòu):

v2ex
├── LICENSE
├── README.md
└── tests
    └── test_user.py

1 directory, 3 files

項(xiàng)目已經(jīng)存在了,先別著急編寫測試代碼,先把開發(fā)環(huán)境搭建起來,下一節(jié)介紹如何搭建一個完美的 Python 開發(fā)環(huán)境。

虛擬環(huán)境

本文基于 python3.7 版本,使用 pipenv 來管理開發(fā)環(huán)境,可能有些人沒有使用過 pipenv。這東西對于管理虛擬環(huán)境而言太好用了,具體使用可參照官網(wǎng)或者 使用pipenv管理你的項(xiàng)目 這篇文章來使用。
本文假設(shè)你已經(jīng)存在了 Python3.7 環(huán)境了,然后可以通過pip 來安裝pipenv

pip install pipenv -i https://pypi.tuna.tsinghua.edu.cn/simple(如果配了就不要-i后面的)

如果不了解 pipenv,可以通過下面來參考相關(guān)命令:

$ pipenv -h
........(省略)
Usage Examples:
   Create a new project using Python 3.6, specifically:
   $ pipenv --python 3.6

   Install all dependencies for a project (including dev):
   $ pipenv install --dev

   Create a lockfile containing pre-releases:
   $ pipenv lock --pre

   Show a graph of your installed dependencies:
   $ pipenv graph

   Check your installed dependencies for security vulnerabilities:
   $ pipenv check

   Install a local setup.py into your virtual environment/Pipfile:
   $ pipenv install -e .

   Use a lower-level pip command:
   $ pipenv run pip freeze

安裝后 pipenv 后,在 v2ex 根路徑下創(chuàng)建虛擬環(huán)境,即是通過

$ pipenv --python 3.7

執(zhí)行完這條命令后,就默認(rèn)幫你創(chuàng)建好一個Python虛擬環(huán)境了,然后可以通過

$ pipenv shell 進(jìn)入虛擬環(huán)境中

仔細(xì)觀察 v2ex 根路徑多了個 Pipfile 文件,該文件其實(shí)和以前的 requirements.txt 文件一樣保存項(xiàng)目的各種依賴庫的信息, 這個Pipfile 文件結(jié)構(gòu)如下:

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple" # 修改成國內(nèi)源
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.7"

so,因?yàn)槭褂玫氖?Flask 框架,那就先安裝一下 Flask 吧,使用以下命令安裝,注意不是使用 pip 安裝了

$ pipenv install flask

如果安裝過程出現(xiàn)TypeError: "module" object is not callable 錯誤
你需要

$ pipenv run pip install pip==18.0
$ pipenv install

最簡單的 Flask 環(huán)境已經(jīng)搭建好了,可以使用 git 進(jìn)行一次提交了,本文會基于 git 來分階段提交代碼,不了解 git 的同學(xué)要自己反省一下了。
下面看看當(dāng)前項(xiàng)目的文件結(jié)構(gòu)

v2ex
├── LICENSE
├── Pipfile
├── Pipfile.lock
├── README.md
└── tests
    └── test_user.py

然后使用Git提交至遠(yuǎn)程倉庫

在 v2ex 的根路徑下
$ git add .
$ git commit -m "add tests and pipfile"
$ git push origin master
總結(jié)

本文主要介紹了使用 TDD 方式實(shí)現(xiàn)一個技術(shù)社區(qū),并初步介紹了 TDD 的概念,然后構(gòu)建了項(xiàng)目的測試結(jié)構(gòu),介紹了社區(qū)的相關(guān)需求,后續(xù)會根據(jù)需求來開發(fā),最后搭建了一個Python 開發(fā)環(huán)境來隔離本地環(huán)境。本文主要兼顧各層次的讀者,所以就介紹了一些最基本的東西,后續(xù)主要以 TDD 開發(fā)實(shí)現(xiàn)為主了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42632.html

相關(guān)文章

  • Flask Web 測試驅(qū)動開發(fā)最佳實(shí)踐 Flask 實(shí)例

    摘要:當(dāng)功能越來越復(fù)雜的時候,你可能修改了一些東西,導(dǎo)致另外一個功能的不可用,而單元測試也能保證了原有功能被破壞后能被檢測出來。 showImg(https://segmentfault.com/img/remote/1460000017081749); 前言 前一篇講到了 TDD 測試驅(qū)動開發(fā)的相關(guān)概念和環(huán)境搭建,這篇就著手開始用TDD方式開發(fā)了。首先這篇需要編寫用戶相關(guān)的API接口,如...

    wuyangnju 評論0 收藏0
  • 《Python Web開發(fā)》作者Harry Percival:TDD就是微小而漸進(jìn)的改變

    摘要:目前就職于,他在各種演講研討會和開發(fā)者大會上積極推廣測試驅(qū)動開發(fā)。問很多敏捷教練都表示訓(xùn)練新人做測試驅(qū)動開發(fā)是一件辛苦而進(jìn)度緩慢的事,并且收益也不是很大。首先是開發(fā)的對話式風(fēng)格。第一個問題就是測試套件的速度。 Harry J.W. Percival目前就職于PythonAnywhere,他在各種演講、研討會和開發(fā)者大會上積極推廣測試驅(qū)動開發(fā)(TDD)。他在利物浦大學(xué)獲得計(jì)算機(jī)科學(xué)碩士學(xué)...

    Guakin_Huang 評論0 收藏0
  • 《Python Web開發(fā)》作者Harry Percival:TDD就是微小而漸進(jìn)的改變

    摘要:目前就職于,他在各種演講研討會和開發(fā)者大會上積極推廣測試驅(qū)動開發(fā)。問很多敏捷教練都表示訓(xùn)練新人做測試驅(qū)動開發(fā)是一件辛苦而進(jìn)度緩慢的事,并且收益也不是很大。首先是開發(fā)的對話式風(fēng)格。第一個問題就是測試套件的速度。 Harry J.W. Percival目前就職于PythonAnywhere,他在各種演講、研討會和開發(fā)者大會上積極推廣測試驅(qū)動開發(fā)(TDD)。他在利物浦大學(xué)獲得計(jì)算機(jī)科學(xué)碩士學(xué)...

    k00baa 評論0 收藏0
  • Python:Tornado 開篇

    摘要:作為網(wǎng)站的基礎(chǔ)框架,于年月日發(fā)布,目前已經(jīng)獲得了很多社區(qū)的支持,并且在一系列不同的場景種得到應(yīng)用。使用該框架,開發(fā)者能夠快速開發(fā)出即安全又強(qiáng)大的用戶身份認(rèn)證機(jī)制,例如機(jī)制用戶身份認(rèn)證防止跨站攻擊等等。 下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第一節(jié):同步與異步I/O Tornado是一個可擴(kuò)展的非阻塞Web服務(wù)器以及相關(guān)工具的總稱。Tornado每秒可以處理...

    Anshiii 評論0 收藏0
  • docker-compose 運(yùn)行 Flask 應(yīng)用最佳實(shí)踐

    摘要:現(xiàn)在有了之后,部署方式變了更加容易,不容易出現(xiàn)配置錯誤,環(huán)境不一致問題。實(shí)際應(yīng)用中,經(jīng)常遇到多個容器相配合運(yùn)行一套應(yīng)用程序的情況。所以想要將應(yīng)用運(yùn)行在容器中,該容器必須將該應(yīng)用所有的環(huán)境依賴安裝好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 ??以前部署應(yīng)用,需要各種環(huán)境配置,各種shell操作...

    fasss 評論0 收藏0

發(fā)表評論

0條評論

fnngj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<