從代碼中簡單瞭解單元測試(Java的JUnit和Python的unittest)

前言

這段學習了很多文檔,其中就包括單元測試。所以,這裏寫一篇博客來記錄和鞏固學到的知識。

1. Java的JUnit 4

使用Eclipse創建一個Java Project:
在這裏插入圖片描述

JUnitTesting.java

package testing;

public class JUnitTesting {
	public int squre(int n) {
		return n*n;
	}
	
	public int countA(String words) {
		int count = 0;
		String wordsToLower = words.toLowerCase();
		for(int i=0; i < words.length(); i++) {
			if (wordsToLower.charAt(i) == 'a') {
				count++;
			}
		}
		return count;
	}
}
  • 創建第一個單元測試:
    在這裏插入圖片描述
    選擇如下(最新的是JUnit 5,不過因爲後面創建運行所有測試的類會失敗,所以選擇JUnit4):
    在這裏插入圖片描述
    在這裏插入圖片描述
    實例代碼:
    5的平方=25,但是這裏給的參數是23,所以結果應該是失敗。
    在這裏插入圖片描述
    郵件Run as:
    在這裏插入圖片描述
    修改爲25:
    在這裏插入圖片描述

  • 創建第二個單元測試:
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 創建一個運行所有的單元測試的類(我不知道怎麼稱呼。。。):
    在這裏插入圖片描述
    在這裏插入圖片描述
    運行:
    你會發現運行了兩個單元測試:
    在這裏插入圖片描述

2. Python的unittest

爲了簡化操作,這裏就不編寫用於測試的源代碼,直接測試Python的字典。

import unittest

class TestDict(unittest.TestCase):

    def test_init(self):
        # 賦值後,字典中是否有對應的鍵和值
        d = dict(a=1, b='test')
        self.assertEqual(d['a'], 1)
        self.assertEqual(d['b'], 'test')
        self.assertTrue(isinstance(d, dict))

    def test_key(self):
        # 賦值後,字典中是否有對應的鍵和值
        d = dict()
        d['key'] = 'value'
        self.assertEqual(d['key'], 'value')

    def test_attr(self):
        # 賦值後,字典中是否有對應的鍵和值
        d = dict()
        d['key'] = 'value'
        self. assertEqual('key' in d, True)
        self. assertEqual(d['key'], 'value')

    def test_keyerror(self):
        # 是否存在指定的key
        d = dict()
        with self.assertRaises(KeyError):
            value = d['empty']

    def test_attrerror(self):
        # 測試是否存在屬性、方法
        d = dict()
        with self.assertRaises(AttributeError):
            value = d.empty

運行:
python -m unittest blog_unittest
在這裏插入圖片描述
運行原理是,會自動運行所有test_xxx 開始的方法。另外的兩個方法,會在每個test_xxx運行前和運行後分別執行(可以用於數據庫連接和關閉),如:

import unittest

class TestDict(unittest.TestCase):

    def test_init(self):
        # 賦值後,字典中是否有對應的鍵和值
        d = dict(a=1, b='test')
        self.assertEqual(d['a'], 1)
        self.assertEqual(d['b'], 'test')
        self.assertTrue(isinstance(d, dict))

    def test_key(self):
        # 賦值後,字典中是否有對應的鍵和值
        d = dict()
        d['key'] = 'value'
        self.assertEqual(d['key'], 'value')

    def test_attr(self):
        # 賦值後,字典中是否有對應的鍵和值
        d = dict()
        d['key'] = 'value'
        self. assertEqual('key' in d, True)
        self. assertEqual(d['key'], 'value')

    def test_keyerror(self):
        # 是否存在指定的key
        d = dict()
        with self.assertRaises(KeyError):
            value = d['empty']

    def test_attrerror(self):
        # 測試是否存在屬性、方法
        d = dict()
        with self.assertRaises(AttributeError):
            value = d.empty

    def setUp(self):
        print("setUp...")

    def tearDown(self):
        print("tearDown...")

一共5組:
在這裏插入圖片描述

完!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章