测试学习----python(十)
Unitest框架
框架
- 框架英⽂单词framework
- 为解决⼀类事情的功能集合
- 需要按照框架的规定(套路) 去书写代码
UnitTest框架
- 概念: UnitTest是Python⾃带的⼀个单元测试框架,⽤它来做单元测试。
- ⾃带的框架(官⽅): 不需要单外安装, 只要安装了 Python,
就可以使⽤random, json, os, time - 第三⽅框架: 想要使⽤ 需要先安装后使⽤(pytest)
selenium , appium, requests - 单元测试框架: 主要⽤来做单元测试, ⼀般单元测试是开发做
的. - 对于测试来说, unittest 框架的作⽤是 ⾃动化脚本(⽤例代
码) 执⾏框架(使⽤ unittest 框架 来 管理 运⾏ 多个测试
⽤例的)
- UniTest的作用优点
- 能够组织多个⽤例去执⾏
- 提供丰富的断⾔⽅法(让程序代码代替⼈⼯⾃动的判断预期
结果和实际结果是否相符) - 能够⽣成测试报告
- UnitTest核心要素
- testCase(最核心的模块)
TestCase(测试⽤例), 注意这个测试⽤例是 unittest 框架的组成部分, 不是⼿⼯和⾃动化中我们所说的⽤例 (TestCase)
作用:每个 TestCase(测试⽤例) 都是⼀个代码⽂
件, 在这个代码⽂件中 来书写 真正的⽤例代码 - TestSuite(测试套件)
TestSuite(测试套件):用来管理组装(打包)多个TestCase - TestRunner
TestRunner(测试执行,测试运行),用来执行Testsuite(测试套件)
-TestLoader
TestLoader(测试加载), 功能是对 TestSuite(测试套
件) 功能的补充,管理 组装(打包)多个 TestCase(测试⽤例) 的
-Fixture
Ficture(测试夹具),书写在TestCase(测试用例)代码中,是一个代码结构,可以在每个方法执行前后都会执行的内容
举例:
登录的测试⽤例, 每个⽤例中重复的代码就可以写在
Fixture 代码结构中, 只写⼀遍, 但每次⽤例⽅法的执
⾏,都会执⾏ Fixture 中的代码
- 打开浏览器
- 输⼊⽹址
TestCase(测试用例)
- 是⼀个代码⽂件, 在代码⽂件中 来书写真正的⽤例代码
- 代码⽂件的名字必须按照标识符的规则来书写(可以将代码的
作⽤在⽂件的开头使⽤注释说明) - 步骤
- 导包 (unittest)
- ⾃定义测试类
- 在测试类中书写测试⽅法
- 执⾏⽤例
"""
代码的⽬的: 学习 TestCase(测试⽤例)模块的书写⽅法
"""
# 导包
import unittest
# 自定义测试类,需要继承unittest模块中的TestCase类
class TestDemo(unittest.TeatCase):
#书写测试方法,即用例代码,
#书写要求:测试方法必须以test_开头
def test_method1(self):
print('测试方法1')
def test_method(self):
print('测试方法2')
#执行用例(方法)
#将光标放在类名后边运行,会执行类中给所有测试方法
#将光标放在方法名后面运行,只执行当前方法
Tips:
- 代码文件命名需规范
(数字,字母,下划线组成,不可以数字开头) - 右键运⾏没有 unittests for 的提示, 出现的问题
解决⽅案:
⽅案1. 重新新建⼀个代码⽂件, 将写好的代码复制进去
⽅案2. 删除已有的运⾏⽅式 - 没有找到用例
测试方法中不是以test_开头的,或者单词写错
TestSuite &TestRunner
- TestSuite(测试套件):管理 打包 组装 TestCase(测试用例)文件
- TestRunner(测试执行):执行TestSuite(套件)
- 步骤
- 导包(unittest)
- 实例化(创建对象套件对象)
- 使用套件对象添加用例方法
- 实例化运行对象
- 使用运行对象去执行套件对象
'''
Tsetsuite(测试套件):是用来管理多个TestCase(测试用例)的,先创建多个TestCase(测试用例)
'''
#导包
import unittest
from testcase1 import TestDemo1
from testcase2 import TestDemo2
#实例化套件对象(创建套件对象)
suite=unittest.TestSuite()
#使用套件对象添加用例方法
# ⽅式⼀, 套件对象.addTest(测试类名('⽅法名'))