欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 中 unittest 单元测试框架中需要知识点

程序员文章站 2022-06-23 22:31:18
现在正在使用 unittest 框架,我们来记录下这个框架的知识点; unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识别以 test_ 开头的测试用例,unittest 相当于是一个包,我们来使用包里面的工具; 1. ......

  现在正在使用 unittest 框架,我们来记录下这个框架的知识点;

  unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 testcase 的类和方法,私有方法除外,来识别以 test_ 开头的测试用例,unittest 相当于是一个包,我们来使用包里面的工具;

1. 单元测试的概念

  1. 测试不是来测试java写的模块、函数、类
  2. 而是测试代码输入和输出,比对是否正确
  3. 往往单元测试, 是有开发来写, 用于测试自己写的模块、函数、类是否正确
  4. 有的一些单元测试任务, 是由测试人员来写
  5. 单元测试, 是一个极其强大的测试断言工具

2. 单元测试的作用

对代码中的函数、类、模拟进行测试
辅助进行接口测试,将预期结果与实际结果进行对

3. 运行 unittest 的时候, 我们就调用父类的 main() 方法来运行

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

4. unittest 框架中,如何测试多条用例?用例执行顺序?如何记录判断接口的成功与失败的用例

  • unittest 框架会把以 test_ 开头的实例方法识别为用例, 同时会自动执行
  • 如果不是 test_ 开头的方法, 那么不会被当做用例当自动执行
  • 以test_开头的实例方法名称的 ascci 码数值,从小到大的顺序执行
  • 使用 try..except.... 来记录成功与失败的用例总数
  • 测试用例失败后需要主动抛出异常,增加日志文件,记录测试用例的结果
  • 执行的总用例数为: 所有以test_开头的实例方法总数
  • 失败的用例总数为, 抛出异常的实例方法总数

5. unittest 框架中为我们提供了强大的断言方法,我们来记录下常用的几个

self.assertequal():断言实际结果与预期结果是否相等;第一个参数为期望值,第二个参数为实际值,第三个参数 msg 为断言失败之后的报错信息
self.assertin():成员运算第一个表达式是否是第二个表达式的成员
self.asserttrue():断言这个表达式是否为true,如果为true则成功,不为true则失败
self.assertisinstance():断言第一个是否是第二个参数的实例(判断是否是list类型)
self.assertisnone():断言字段obj数值不为空
self.assertis():判断两个对象是不是同一个对象
self.assertraises():抛出异常

import unittest


class testclass01(unittest.testcase):

    def test_case01(self):
        # 把鼠标放在实例方法名上来运行用例, 那么只会运行当前一条用例
        # asserttrue 判断是否为真,isupper(译:一字欧喷)是否全部为为大写
        self.asserttrue("python".isupper(), msg="测试是否为大写失败")

    def test_case02(self):
        name = "北辰"
        names_list = ["休想", "默", "生如花开", "蝶影飞雪", "北辰"]
        # 成员运算第一个表达式是否是第二个表达式的成员
        self.assertin(name, names_list)

    def test_case03(self):
        one_var = [100, 200]
        # assertisinstance 判断这个函数是否为指定类型 列表
        self.assertisinstance(one_var, list)    # (译:额赛特.疑似因斯ten死)


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

6. python 接口自动化用例执行之前需要使用:setup、teardown;setupclass、teardownclass

setup :每个用例执行之前调用
teardown :每个用例执行之后调用
setupclass :(译:赛特阿婆.克拉斯)所有用例执行之前调用 testcase 中 setupclass 类方法
teardownclass:(译:缇欧当.克拉斯)所有用例执行之后会调用 testcase 中 teardownclass 类方法

通常我们会使用 setupclass 、teardownclass 需要定义为类方法,如果不定义就没有所有用例之前之后调动的这种特性;

7. python 中常用的装饰器

@classmethod:定义为类方法(译:卡拉斯.满涩的)
@staticmethod:定义为静态方法(译:斯达特克.满涩的)

 

 

*******请大家尊重原创,如要转载,请注明出处:转载自:   谢谢!!*******