Python学习笔记(四)

第十一章

测试用例,这是本书基础章节的最后一章,具体内容和测试有关。
python标准库 unittest 提供了代码测试工具。

被测试函数如下:(写在Bclass.py文件中)

def Add_number(a ,b,c=10):
    return a+b+c

测试用例如下:(要求继承unittest.TestCase类)

from Bclass import Add_number
import unittest

class test_example(unittest.TestCase): #这里要求继承该类
    def test_Add_number(self): #函数名必须以test开头
        d=Add_number(1,2,3)
        self.assertEqual(d,6)  #断言判断二者是否相等

if __name__=='__main__':  #当该文件被作为程序入口执行时
	unittest.main()		  #该判断语句会生效。

显然我们知道,返回的结果显然和6是相符的,因此程序返回内容如下:

如果我们修改该测试用例,断言修改为7,输出结果如下:

由于我们程序中并没有出现任何bug,但是断言判断无法通过,这时候返回的是fail(F),如果程序中出现了bug,例如我们传递了四个参数,输出结果如下:
在这里插入图片描述
将会返回Error(E),除此之外还有一点需要注意,见如下代码:

from Bclass import Add_number
import unittest

class test_example(unittest.TestCase):

    def test_Add_number2(self):
        d=Add_number(1,2,3)
        self.assertEqual(d,6)
    def test_Add_number(self):
        d=Add_number(1,2,4)
        self.assertEqual(d,7)
        
if __name__=='__main__':
    unittest.main()

程序执行后会检测 text_example中所有以test开头的函数。
如果其中有任意一个测试函数有问题,程序都将提出错误。并且附带详细的错误信息。

对一个类进行测试;
其本质上和前面对函数功能的测试是相同的,下面是示例:
类代码(写在Aclass.py文件中)

class Qtest:
    def __init__(self,number):
        self.number=number
        self.names=[]
        print(f"该班的序号是:{self.number}")
    def apply_insert(self,name):
        if name not in self.names:
            self.names.append(name)
        else:
            print("该名称的学生已经存在!")
    def shownames(self):
        print("----------------------分割线--------------------------")
        for name in self.names:
            print(name)
        print("----------------------分割线--------------------------")

测试 文件 写在main.py中

import unittest

from Aclass import Qtest
class testAclass(unittest.TestCase):
    def test_TestAclass(self):
        example_Aclass=Qtest(7)
        examplenames=[]
        for i in range(0,3):
            namep=input("请输入名称:")
            examplenames.append(namep)
        for name in examplenames:
            example_Aclass.apply_insert(name)

        for name in examplenames:
            self.assertIn(name,example_Aclass.names)

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

此类负责录入 所有7班的学生,不允许重名(hhh)
按照提示测试即可。

如果 测试类有多个测试函数,其可能任务是类似的(测试同一个类),使用的测试数据可能都是相同的,那我们不必再每个测试函数内都写上同样的测试数据,而是采用python的特殊函数setUp()

众所周知,启动unittest.main()函数执行后,会执行继承unittest类的子类中所有以test开头的函数,那么使用setUp函数,可以在运行所有test开头的函数前,先运行setUp函数(你可以理解为一个默认初始化函数),我们可以利用这个默认初始化函数实现测试数据的初始化。

此处就不再展示使用方法了,至此为止,python的前11章基础部分就全部结束了,后面将花费不到一星期,完成后续三个实例的编写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值