iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

前情提要:

昨天我們將後端的功能給製作完成,那今天就要來針對昨天的功能來進行單元測試,那話不多說,我們開始!

程式碼:

# tests/test_process.py
from src.functions.process import extractWeatherData, splitWeatherData, extractWeatherTime, splitWeatherTime
from tests.fixture import test_data_extract, test_data_split, test_weather_split

def test_extractWeatherData(test_data_extract):
    real = extractWeatherData(test_data_extract)
    expect = ([{'elementName': 'Wx', 'time': [{'startTime': '2023-08-26 12:00:00', 'endTime': '2023-08-26 18:00:00', 'parameter': {'parameterName': '多雲', 'parameterValue': '4'}}, {'startTime': '2023-08-26 18:00:00', 'endTime': '2023-08-27 06:00:00', 'parameter': {'parameterName': '晴時多雲', 'parameterValue': '2'}}, {'startTime': '2023-08-27 06:00:00', 'endTime': '2023-08-27 18:00:00', 'parameter': {'parameterName': '晴時多雲', 'parameterValue': '2'}}]}], [{'elementName': 'PoP', 'time': [{'startTime': '2023-08-26 12:00:00', 'endTime': '2023-08-26 18:00:00', 'parameter': {'parameterName': '20', 'parameterUnit': '百分比'}}, {'startTime': '2023-08-26 18:00:00', 'endTime': '2023-08-27 06:00:00', 'parameter': {'parameterName': '10', 'parameterUnit': '百分比'}}, {'startTime': '2023-08-27 06:00:00', 'endTime': '2023-08-27 18:00:00', 'parameter': {'parameterName': '10', 'parameterUnit': '百分比'}}]}], [{'elementName': 'MinT', 'time': [{'startTime': '2023-08-26 12:00:00', 'endTime': '2023-08-26 18:00:00', 'parameter': {'parameterName': '29', 'parameterUnit': 'C'}}, {'startTime': '2023-08-26 18:00:00', 'endTime': '2023-08-27 06:00:00', 'parameter': {'parameterName': '25', 'parameterUnit': 'C'}}, {'startTime': '2023-08-27 06:00:00', 'endTime': '2023-08-27 18:00:00', 'parameter': {'parameterName': '25', 'parameterUnit': 'C'}}]}], [{'elementName': 'MaxT', 'time': [{'startTime': '2023-08-26 12:00:00', 'endTime': '2023-08-26 18:00:00', 'parameter': {'parameterName': '32', 'parameterUnit': 'C'}}, {'startTime': '2023-08-26 18:00:00', 'endTime': '2023-08-27 06:00:00', 'parameter': {'parameterName': '29', 'parameterUnit': 'C'}}, {'startTime': '2023-08-27 06:00:00', 'endTime': '2023-08-27 18:00:00', 'parameter': {'parameterName': '32', 'parameterUnit': 'C'}}]}])

    assert real == expect

def test_splitWeatherData(test_data_split):
    real = splitWeatherData(test_data_split)
    expect = (['多雲', '晴時多雲', '晴時多雲'], ['20', '10', '10'], ['29', '25', '25'], ['32', '29', '32'])

    assert real == expect


def test_extractWeatherTime(test_data_extract):
    real = extractWeatherTime(test_data_extract)
    expect = (['2023-08-26 12:00:00', '2023-08-26 18:00:00', '2023-08-27 06:00:00'], ['2023-08-26 18:00:00', '2023-08-27 06:00:00', '2023-08-27 18:00:00']) 

    assert real == expect

def test_splitWeatherTime(test_weather_split):
    real = splitWeatherTime(test_weather_split)
    expect = ['08/26 12:00 - 08/26 18:00', '08/26 18:00 - 08/27 06:00', '08/27 06:00 - 08/27 18:00']

    assert real == expect

程式碼講解:

  1. 測試部分主要分成兩個檔案,分別是測試 tests/test_process.py 和存放測試資料的 tests/fixture.py,這裡因為篇幅關係,並沒有將 tests/fixture.py 放進此文章中,若需要可以從 Day23 的 GitHub 專案中獲取。

上一篇
Day24 - 實作(二)- 後端資料處理製作
下一篇
Day26 - 實作(四)- 畫面建置和資料串接
系列文
Python Flask CICD 啟動 ! 建構屬於你的自動化流程 !30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言