zoukankan      html  css  js  c++  java
  • 单元测试---testsuite对象

    '''
    导包,unittest是自带的框架,不需要安装
    创建一个单元测试类(其实就是类,只不过给继承了单元测试框架单元测试用例的类)
    单元测试类中五个特殊方法的使用,包括场景及执行顺序
    setUp()/test_xxx()/tearDowm():不管你怎么调整为,执行顺序不变
    setUp():主要是进行测试用例资源初始化,测试用例的前提条件写这
    test_xxx():测试用例,要把测试用例的步骤写在这个方法中
    tearDown():主要是进行测试用例资源释放的如: self.mm= None #释放资源,释放内存
    @classmethod 注解的方法是类方法,不用创建对象也能用的方法,在对象进内存之前就已经存在的方法随着类一起进的内存
    setUpClass:给当前单元测试类的所有的用例进行初始化的
    tearDownClass:给当前单元测试类的所有的用例进行资源释放
    以test开头的都是测试用例
    setUpClass和setUp()区别:
    1/setUp() 不需要@classmethod注释,setUpClass则需要@classmethod注释
    2/setUp() 实例方法,需要创建对象在调用,setUpClass类方法,不需要对象也可以调用
    3/setUp() 在每一个测试用例执行之前运行一次;setUpClass方法在测试执行之前只执行一次
    4/setUp() 是度一条用例初始化 ; setUpClass()给当前单元测试类得所有用例进行初始化

    5/测试用例执行:
    main():把所有测试用例都执行了一遍,执行测试用例顺序控制不了,(按照测试用例名(方法名)得字母顺序来执行得)
    使用测试集合得概念:testsuite 类似于分类,我要把加法得测试用例加到一个测试集合testsuite中,只运行该测试集合即可
    testsuite:
    1/创建 testsuite();对象



    '''
    import unittest
    # 导入文件text_03里面得模块
    from text_03.myMathtwo import *


    # 创建单元测试类 TestCase(测试用例)
    class unitMath(unittest.TestCase):

    @classmethod # 注解
    def setUpClass(cls):
    print("我是setUpClass方法")

    @classmethod
    def tearDownClass(cls):
    print("我是tearDownClass方法")

    # 方法名不能改,self不能少
    def setUp(self):
    print("我是setUp方法")

    # 直接调用另一个文件类就行
    self.mm = mymath()

    # test开头是测试用例
    # 第三条测试用例
    def test_cheng_2(self):
    print("我是第三条测试用例")
    actualValue = self.mm.chengfa(12, 2)
    expectValue = 24
    # 该方法判断断言是否相等
    self.assertEqual(actualValue, expectValue, "预期结果和实际结果不符合")

    # 第一条测试用例
    def test_add_1(self):
    print("我是第一条测试用例")
    actualValue = self.mm.jia(2, 3)
    expectValue = 5
    # 该方法判断断言是否相等
    self.assertEqual(actualValue, expectValue, "预期结果和实际结果不符合")

    # 第二条测试用例
    def test_add_2(self):
    print("我是第二条测试用例")
    actualValue = self.mm.jia("ab", "cd")
    expectValue = "abcd"
    # 该方法判断断言是否相等
    self.assertEqual(actualValue, expectValue, "预期结果和实际结果不符合")

    # 方法名不能改,self不能少
    def tearDown(self):
    print("我是teardown方法")
    # 在teardown中释放资源
    self.mm = None


    if __name__ == "__main__":
    # 执行全部测试用例
    # unittest.main()
    # 选择优先执行单个用例
    suitt = unittest.TestSuite()
    # 格式:类名(用例名)
    # 测试集合对象中有一个方法,addtest--》追加单个测试用例到测试集合(有问题)无法查找自己想要得内容
    suitt.addTest(unitMath("test_cheng_2"))

    # 测试集合对象中有一个方法,addtests-->追加多个测试用例到测试集合(有问题)
    #suitt.addTest(map(unitMath,["test_add_2"]))
    # 测试结果
    re = unittest.TestResult()
    suitt.run(re)
    # 字典,结果数据
    # print(re.__dict__)

      

  • 相关阅读:
    win10 安装anaconda+tensorflow
    CNN 理论
    mac 调出任何来源方法
    git忽略文件权限检查
    ios plist获取权限
    Vue-从入门到第三次世界大战_1
    libc++abi.dylib: terminating with uncaught exception of type NSException
    unity3d导出xcode项目使用afnetworking 3框架导致_kUTTagClassMIMEType 问题解决方案
    ios cannot use "@throw" with objective-c exceptions disabled 问题解决方案
    关于iOS APP转让
  • 原文地址:https://www.cnblogs.com/wsx123/p/14494040.html
Copyright © 2011-2022 走看看