从代码中简单了解单元测试(Java的JUnit和Python的unittest)

10 篇文章 0 订阅

前言

这段学习了很多文档,其中就包括单元测试。所以,这里写一篇博客来记录和巩固学到的知识。

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
运行(blog_unittest.py 是文件, 运行命令不需要.py后缀):

python -m unittest blog_unittest
在这里插入图片描述
运行原理是,会自动运行所有test_xxx 开始的方法。另外的两个方法,会在每个test_xxx运行前和运行后分别执行,
setUpClass 和 tearDownClass只会在运行前和运行后执行一次,可以用于数据库连接和关闭
如:

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...")

    def setUpClass():
        print("初始化数据库连接")

    def tearDownClass():
        print("关闭数据库连接")

一共5组:
在这里插入图片描述

参考:

Java:https://www.youtube.com/watch?v=I8XXfgF9GSc
Python:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140137128705556022982cfd844b38d050add8565dcb9000

完!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值