zoukankan      html  css  js  c++  java
  • 断言和简单unittest单元测试的入门代码整理


    '''
    1.认识Assert 断言
    断言的比较运算符号:assert可以使用比较运算:”==” “!=” ‘’<” “>” “>=” “<=”等符号来比较相等、不相等、小于、大于、大于等于和小于等于。

    Assert 语法格式:
    assert 1 ==1
    assert 2+2 ==2*2
    断言的作用:
    1.检查文档
    2.具有一定的判断的效果
    3.防御性的编程


    使用方法:
    assertEqual(first,second,msg)其中first与second 进行比较,如果相等则通过;msg为失败的信息,选填。 断言assertNotEqual反正用就可以。
    1.assertTrue 和 assertFalse
    assertTrue :判断bool值为True,则pass
    assertFalse: 判断bool值为False,则pass
    '''
    # assert 8>5,"not Ture" #正确没有任何操作
    # assert 3>5,"not Ture" #错误抛出异常

    '''
    a="this is a string"
    assert type(a)== int,"类型不一致"
    assert type(a)== str,"类型不一致"

    当断言正确的时候,不会输出,
    反之错误,则输出异常信息
    '''


    '''
    try...except:
    用来引发异常

    try:
    print("请输入一个整数")
    a=int(input())
    print('值是:',a)
    except:
    print("您输入有误,请重新输入")
    '''
    # if 条件判断 TRUE执行 错误 else语句

    '''
    错误,异常,断言区别:
    错误:代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改
    异常:
    1.异常产生:检查到错误且解释器认为是异常,抛出异常
    2.异常处理:截取异常,或略或者终止处理异常
    3.断言:就是拿实际的结果和预期的结果相互比较,断言就是比的过程

    '''

    import unittest #导入单元测试框架

    class TestStringMethods(unittest.TestCase):

       '''

       继承unittest下的TestCase

       

       测试用例(testCase):是为了某个特殊目标而编制的一组测试输入,

       执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

       使用名称以字母开头的方法定义三个单独的测试 test。

       此命名约定通知测试运行器哪些方法代表测试。

          assertEqual(a, b) a == b  

          assertNotEqual(a, b) a != b  

          assertTrue(x) bool(x) is True  

          assertFalse(x) bool(x) is False   

          assertIs(a, b) a is b 3.1

          assertIsNot(a, b) a is not b

          assertIsNone(x) x is None

          assertIsNotNone(x) x is not None

          assertIn(a, b) a in b 3.1

          assertNotIn(a, b) a not in b

          assertIsInstance(a, b) isinstance(a, b)

          assertNotIsInstance(a, b) not isinstance(a, b)

       

       '''

        def test_upper(self):

           #定义一个以test开头的方法会自动调用

           #断言'foo'.upper() == 'FOO'

            self.assertEqual('foo'.upper(), 'FOO')

             

        def test_isupper(self):

           #断言'FOO'全部是大写 是真的

            self.assertTrue('FOO'.isupper())

           #断言'Foo'全部是大写是假的

            self.assertFalse('Foo'.isupper())

        def test_split(self):

            s = 'hello world'

            #断言s.split()的结果与['hello', 'world']相等

            self.assertEqual(s.split(), ['hello', 'world'])

            # check that s.split fails when the separator is not a string

             #检查。当分隔的不是字符串时,split失败 断言一个类型错误异常

            with self.assertRaises(TypeError):

                s.split(2)

    if __name__ == '__main__':

        unittest.main()

  • 相关阅读:
    (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
    (Java) LeetCode 30. Substring with Concatenation of All Words —— 与所有单词相关联的字串
    (Java) LeetCode 515. Find Largest Value in Each Tree Row —— 在每个树行中找最大值
    (Java) LeetCode 433. Minimum Genetic Mutation —— 最小基因变化
    (Java) LeetCode 413. Arithmetic Slices —— 等差数列划分
    (Java) LeetCode 289. Game of Life —— 生命游戏
    (Java) LeetCode 337. House Robber III —— 打家劫舍 III
    (Java) LeetCode 213. House Robber II —— 打家劫舍 II
    (Java) LeetCode 198. House Robber —— 打家劫舍
    (Java) LeetCode 152. Maximum Product Subarray —— 乘积最大子序列
  • 原文地址:https://www.cnblogs.com/pythonyeyu/p/10529087.html
Copyright © 2011-2022 走看看