---
title: "Pynguin 自動產生 Python 單元測試"
url: https://sammy.hk/pynguin-%e8%87%aa%e5%8b%95%e7%94%a2%e7%94%9f-python-%e5%96%ae%e5%85%83%e6%b8%ac%e8%a9%a6/
author: Sammy Fung
published: 2021-06-01T17:08:53+08:00
modified: 2021-06-01T17:12:20+08:00
description: "Pynguin 是德國帕紹大學軟件工程二課程主席開發的工具，讓 Python 開發者自動產生Python 單元測試。Pynguin 以 GNU LGPL 許可證釋出源碼。 不少開發者不喜歡寫測試程序來測試開發出來的軟件，因為寫測試是一件乏味的事。但在優質軟件開發過程中，軟件測試是一個不可或缺的過程。在靜態類型語言，例如…"
categories: ["開放源碼"]
tags: [python]
source: https://sammy.hk
---
[![](https://sammy.hk/wp-content/uploads/2021/06/pynguin-1024x536.jpg)](https://sammy.hk/wp-content/uploads/2021/06/pynguin-scaled.jpg)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](https://github.com/se2p/pynguin)

### 相關文章：

1. [寫 Python程式去追風](https://sammy.hk/use-python-to-track-tropical-cyclone/ "寫 Python程式去追風")
2. [Twitter x OAuth x Python = Tweepy](https://sammy.hk/twitter-oauth-python-tweepy/ "Twitter x OAuth x Python = Tweepy")
3. [2021 Python 軟件基金會董事會改選](https://sammy.hk/2021-python-%e8%bb%9f%e4%bb%b6%e5%9f%ba%e9%87%91%e6%9c%83%e8%91%a3%e4%ba%8b%e6%9c%83%e6%94%b9%e9%81%b8/ "2021 Python 軟件基金會董事會改選")
4. [Linux Forum Asia 2005 之後感](https://sammy.hk/linux-forum-asia-2005-%e4%b9%8b%e5%be%8c%e6%84%9f/ "Linux Forum Asia 2005 之後感")
