Pynguin 自動產生 Python 單元測試

Pynguin 是德國帕紹大學軟件工程二課程主席開發的工具,讓 Python 開發者自動產生Python 單元測試。Pynguin 以 GNU LGPL 許可證釋出源碼。

不少開發者不喜歡寫測試程序來測試開發出來的軟件,因為寫測試是一件乏味的事。但在優質軟件開發過程中,軟件測試是一個不可或缺的過程。在靜態類型語言,例如 Java,已有一些自動產生測試工具,但動態類型語言如 Python,卻沒有全自動工具產生單元測試。所以帕紹大學軟件工程開發 Pynguin,以他們所知是 Python 第一套自動產生單元測試工具。

由於 Pynguin 在測試時直接執行有關 Python 測試模組,所以注明有機會損害測試電腦,例如刪除硬碟所有資料。筆者認為安全方法是使用獨立電腦做測試,使用雲端工具如 API 亦要使用測試帳號。

Pynguin 需要使用 Python 3.8,在筆者落筆時,開發者還沒測試在 3.9 或其他版本環境執行。讀者可用 pip 來安裝 Pynguin。

$ pip install pynguin

使用 Pynguin 時,需要提供 python 專案目錄,Pynguin 輸出測試的目錄和測試模組名稱。

pynguin \
  --algorithm WHOLE_SUITE \
  --project_path /tmp/foo \
  --output_path /tmp/testgen \
  --module_name foo.bar

Pynguin 計畫及圖片來源:Pynguin GitHub

Twitter x OAuth x Python = Tweepy

先說一句,我不喜歡 Twitter 廢除其 API 原有只使用 username/password 的 Basic User Authentication 方法。

因為我覺得 twitter 在宣佈有關功能停用日子之時,不太多 twitter 程序使用 twitter oauth (FAQ)。加上我所使用的 python-twitter 版本並不支援 oauth,一直也找不到任何包含 oauth 的 python-twitter 開發版本 (dev version)。也是說我除了需要改 @weatherhk@tctrack@tropicalhk 的程式之外,也需要另找一個 python lib 取代 python-twitter。(氣!)

Tweepy 與 Twitter OAuth

訴苦完後,讓我進入正題了。

試過不同的 twitter oauth python library,到最後一刻才發現 joshthecoder 寫的 tweepy,而我也可以容易地把 tweepy 在我原來的 python code 上 get it work。

Continue reading Twitter x OAuth x Python = Tweepy

寫 Python程式去追風

題目的 “追風” 的 “追” 字是指 tracking(追縱路徑),而不是 chasing(在打風時冒險出外追風)。 :p

編寫追風程式的原由

在很多年前開始,在網上留意熱帶氣旋的消息,把地下天文台首頁設為我的瀏覽器首頁,以便在開啟時看到基本天氣資料。

很多影響香港的熱帶氣旋都在西北太平洋或南中國海形成,而美軍的聯合颱風警報中心(JTWC)提供比香港天文台更大範圍的熱帶氣旋訊息,甚至報告有機會形成熱帶氣旋的低壓區,所以追縱熱帶氣旋的香港愛好者會把 JTWC 作為參考資料之一。

多年來,為了看看有否新的熱帶氣旋形成,不定時會人手點擊所關 JTWC 連結看看有否更新訊息,或可能會錯過了。今年三月尾在看看 python 編程時,發現  python 的程序庫有很多好東西,讓我簡便地編寫一些程式,便開始編寫一個分析 JTWC 報告和提供提示的程序。

追風程式的發展

開發這個程式的主要目的是 Just For Fun(Just for my fun 是更加貼切的形容),開發方式是 Release Early, Release Often。XD

不過唯獨這個程式不是開源的,所以我不太著重這程式在 release 時,是否符合我心中的基本簡單要求。

在開始編寫數小時後,第一個版本便開始使用起來。透過 crond 定時執行,第一個版本程式會分析 JTWC 報告,當發現報告提及 “疑似” 氣旋或低壓區時,會以 NNTP 張貼在我的個人新聞組上(newsgroup)。

Continue reading 寫 Python程式去追風