unittest框架基本使用

软件测试

unittest 框架的介绍

  • 框架
  1. framework

  2. 为了解决⼀类事情的功能集合

  • Unittest 框架

​ 是 Python ⾃带的单元测试框架 - ⾃带的, 可以直接使⽤, 不需要单外安装 - 测试⼈员 ⽤来做⾃动化测试, 作为⾃动化测试的执⾏框架, 即 管理和执⾏⽤例的

  • 使⽤的原因
  1. 能够组织多个⽤例去执⾏
  2. 提供丰富的断⾔⽅法
  3. 能够⽣成测试报告
  • 核⼼要素(组成)
1. TestCase 测试⽤例, 这个测试⽤例是 unittest 的组成 部分,作⽤是 ⽤来书写真正的⽤例代码(脚本) 
2. Testsuite 测试套件, 作⽤是⽤来组装(打包) TestCase(测试⽤例) 的,即 可以将多个⽤例脚本⽂件 组装 到⼀起
3.  TestRunner 测试执⾏(测试运⾏), 作⽤ 是⽤例执⾏ TestSuite(测试套件)的 
4. TestLoader 测试加载, 是对 TestSuite(测试套件) 功 能的补充, 作⽤是⽤来组装(打包) TestCase(测试⽤例) 的
5. Fixture 测试夹具,是⼀种代码结构, 书写 前置⽅法 (执⾏⽤例之前的⽅法)代码 和后置⽅法(执⾏⽤例之后的⽅ 法) 代码 ,即 ⽤例执⾏顺序 前置 ---> ⽤例 ---> 后置

TestCase 测试⽤例

书写真正的⽤例代码(脚本) 单独⼀个测试⽤例 也是可以执⾏

  • 步骤
1. 导包 unittest
2. 定义测试类, 需要继承 unittest.TestCase 类, 习惯性
类名以 Test 开头
3. 书写测试⽅法, 必须以 test 开头
4. 执⾏
  • 注意事项

    1. 代码⽂件名字 要满⾜标识符的规则
    2. 代码⽂件名 不要使⽤中⽂
    
  • 代码

    # 1. 导包 unittest
    import unittest
    # 2. 定义测试类, 只要继承 unittest.TestCase 类, 就是
    测试类
    class TestDemo(unittest.TestCase):
     # 3. 书写测试⽅法, ⽅法中的代码就是真正⽤例代码,
    ⽅法名必须以 test 开头
     def test_method1(self):
     print('测试⽅法⼀')
     def test_method2(self):
     print('测试⽅法⼆')
    # 4. 执⾏
    # 4.1 在类名或者⽅法名后边右键运⾏
    # 4.1.1 在类名后边, 执⾏类中的所有的测试⽅法
    # 4.1.2 在⽅法名后边, 只执⾏当前的测试⽅法
    # 4.1 在主程序使⽤使⽤ unittest.main() 来执⾏,
    if __name__ == '__main__':
     unittest.main()
    
    

TestSuite 和 TestRunner

TestSuite(测试套件)

将多条⽤例脚本集合在⼀起,就是套件, 即⽤来组装⽤例的
1. 导包 unittest
2. 实例化套件对象 unittest.TestSuite()
3. 添加⽤例⽅法

TestRunner(测试执⾏)

⽤来执⾏套件对象
1. 导包 unittest
2. 实例化 执⾏对象 unittest.TextTestRunner()
3. 执⾏对象执⾏ 套件对象 执⾏对象.run(套件对象)

整体步骤

1. 导包 unittest
2. 实例化套件对象 unittest.TestSuite()
3. 添加⽤例⽅法
3.1 套件对象.addTest(测试类名('测试⽅法名'))
4. 实例化 执⾏对象 unittest.TextTestRunner()
5. 执⾏对象执⾏ 套件对象 执⾏对象.run(套件对象)

案例

套件可以⽤来组装⽤例, 创建多个⽤例代码⽂件

套件和执行

# 1. 导包 unittest
import unittest
# 2. 定义测试类, 只要继承 unittest.TestCase 类, 就是
测试类
class TestDemo1(unittest.TestCase):
# 3. 书写测试方法, 方法中的代码就是真正用例代码,
方法名必须以 test 开头
def test_method1(self):
print('测试方法1-1')
def test_method2(self):
print('测试方法1-2')
  • 套件和执⾏
# 1. 导包 unittest
import unittest
from hm_02_testcase1 import TestDemo
from hm_02_testcase2 import TestDemo
# 2. 实例化套件对象 unittest.TestSuite()
suite = unittest.TestSuite()
# 3. 添加用例方法
# 3.1 套件对象.addTest(测试类名('测试方法名')) # 建
议复制
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method2'))
# 4. 实例化 执行对象 unittest.TextTestRunner()
runner = unittest.TextTestRunner()
# 5. 执行对象执行 套件对象 执行对象.run(套件对象)
runner.run(suite)
# 套件对象.addTest(unittest.makeSuite(测试类名)) # 在
不同的 Python 版本中,可能没有提示
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))

TestLoader 测试加载

作用和 TestSuite 作用一样,组装用例代码, 同样也需要使用
TextTestRunner() 去执行
10 个用例脚本 makeSuite()
1. 导包 unittest
2. 实例化加载对象并加载用例 ---> 得到的是 套件对象
3. 实例化执行对象并执行
import unittest
# 实例化加载对象并加载⽤例,得到套件对象
# suite = unittest.TestLoader().discover('⽤例所在的
⽬录', '⽤例代码⽂件名*.py')
suite = unittest.TestLoader().discover('.','hm_02*.py')
# 实例化执⾏对象并执⾏
# runner = unittest.TextTestRunner()
# runner.run(suite)
unittest.TextTestRunner().run(suite)

Fixture

在类中所有的测试⽅法执⾏前后 会⾃动执⾏的代码, 只执⾏⼀次

# 类级别的 Fixture 需要写作类⽅法
@classmethod
def setUpClass(cls): # 类前置
 pass
@classmethod
def tearDownClass(cls): # 后置
 pass
# 类前置 ⽅法前置 ⽤例 ⽅法后置 ⽅法前置 ⽤例 ⽅法后置
类后置
全部评论
点个赞
2 回复 分享
发布于 2022-04-27 14:34

相关推荐

点赞 评论 收藏
分享
牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务