項目配置

目錄

1.測試工具

1.1 unittest

2.常量配置

3. 日誌


1.測試工具

在程序中,我們需要編寫大量的測試來確保每個細節都沒有問題,此時我們可以藉助於一些測試模塊。目前有兩個傑出的模塊可以替我們自動完成測試過程:unittest和doctest。相比於doctest,unittest更加靈活強大,因此我們在實踐中大部分使用unittest。

1.1 unittest

假設我們有一個名爲my_math的模塊,其中包含一個計算乘積的函數product。我們使用模塊unittest中的TestCase類編寫一個測試:

import unittest, my_math


class ProductTestCase(unittest.TestCase):
    def test_integers(self):
        for x in range(-10, 10):
            for y in range(-10, 10):
                p = my_math.product(x, y)
                self.assertEqual(p, x * y, 'Fail!')

    def test_floats(self):
        for x in range(-10, 10):
            for y in range(-10, 10):
                x = x / 10
                y = y / 10
                p = my_math.product(x, y)
                self.assertEqual(p, x * y, 'Fail!')


if __name__ == '__main__':
    unittest.main()

函數unittest.main負責實例化所有的TestCase子類,並運行所有名稱以test打頭的方法。如果定義了方法setUp和tearDown,它們將分別在每個測試方法之前和之後進行執行。我們可以使用這些方法來執行適用於所有測試的初始化代碼和清理代碼,這些代碼稱爲測試夾具。

2.常量配置

所謂常量,指的是內置的字面量值,如數、字符串和列表。對於這些值,可以將其存儲在全局變量中,而不在程序中反覆輸入它們。常量遵循特殊的命名約定:只在變量名中使用大寫字母並用下劃線分隔單詞。

我們可以將配置常量放到獨立的文件中,爲此最簡單的方式是專門爲配置創建一個模塊。例如,如果PI是在模塊文件config.py中設置的,就可以在主程序中像下面這樣做:

from config import PI

另外一種方式是使用標準庫模塊configparser,從而可在配置文件中使用標準格式。這樣既可使用Python標準賦值語法,如:

greeting = 'Hello'

也可使用另外一種配置格式:

greeting:Hello

我們必須使用標題將配置文件分成幾部分,標題的名稱可隨便指定,但必須將他們用方括號括起。一個簡單的配置文件如下:

[numbers]
pi: 3.1415926535897931
[messages]
greeting: Welcome to the area calculation program!
question: Please enter the radius:
result_message: The area is

一個使用ConfigParser的程序:

from configparser import ConfigParser
CONFIGFILE = "area.ini"
config = ConfigParser()
# 讀取配置文件:
config.read(CONFIGFILE)
# 打印默認問候語( greeting):
# 在messages部分查找問候語:
print(config['messages'].get('greeting'))
# 使用配置文件中的提示( question)讓用戶輸入半徑:
radius = float(input(config['messages'].get('question') + ' '))
# 打印配置文件中的結果消息( result_message);
# 以空格結束以便接着在當前行打印:
print(config['messages'].get('result_message'), end=' ')
# getfloat()將獲取的值轉換爲浮點數:
print(config['numbers'].getfloat('pi') * radius**2)

3. 日誌

日誌主要用於收集與程序運行相關的數據,供我們進行研究或積累。我們可以使用標準庫中的模塊logging。實例代碼如下:

import logging
logging.basicConfig(level=logging.INFO, filename='mylog.log')
logging.info('Starting program')
logging.info('Trying to divide 1 by 0')
print(1 / 0)

logging.info('The division succeeded')
logging.info('Ending program')

運行該程序以後,將生成下面的日誌文件(mylog.log):

INFO:root:Starting program
INFO:root:Trying to divide 1 by 0

通過合理地配置模塊logging,可讓日誌以你希望的方式運行。下面是幾個這樣的示例。

  • 記錄不同類型的條目(信息、調試信息、警告、自定義類型等)。默認情況下,只記錄警告。
  • 只記錄與程序特定部分相關的條目。
  • 記錄有關時間、日期等方面的信息。
  • 記錄到其他位置,如套接字。
  • 配置日誌器,將一些或大部分日誌過濾掉,這樣無需重寫程序就能獲得所需的日誌信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章