一、框架
1、 framework
为了解决一类事情的功能集合
2、Unittest 框架
是 Python 自带的单元测试框架
- 自带的, 可以直接使用, 不需要单外安装
- 测试人员 用来做自动化测试, 作为自动化测试的执行框架,
即 管理和执行用例的
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、导包
import unittest
#2、定义测试类,继承unittest.TestCase 类,即测试类别
class TestDemo(unittest.TestCase):
#3、方法名以Test开头
def test_login(self):
print('test1')
def test_set_password(self):
print('test2')
#执行4、在类名或者方法名右键运行
#4.1、在类名中执行全部用例
#4.2、在方法名中,运行当前一个用例
#4.3、在主程序中使用 unittest.main() 来执行
if __name__ == "__main__":
unittest.main()
三、TestSuite和TestRunner
TestRunner(测试套件)
将多条用例脚本集合在一起,就是套件, 即用来组装用例的
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
from testcase01 import TestDemo1
from testcase02 import TestDemo2
# 2. 实例化套件对象 unittest.TestSuite()
suit = unittest.TestSuite()
# 3. 添加用例方法
# 3.1 套件对象.addTest(测试类名('测试方法名'))
suit.addTest(TestDemo1('test_login1'))
suit.addTest(TestDemo1('test_set_password1'))
suit.addTest(TestDemo2('test_login2'))
suit.addTest(TestDemo2('test_set_password2'))
# 4. 实例化 执行对象 unittest.TextTestRunner()
runner = unittest.TextTestRunner()
# 5. 执行对象执行 套件对象 执行对象.run(套件对象)
runner.run(suit)
# 套件对象.addTest(unittest.makeSuite(测试类名)) # 在不同的 Python 版本中,可能没有提示
suit.addTest(unittest.makeSuite(TestDemo1))
suit.addTest(unittest.makeSuite(TestDemo2))
四、TestLoader 测试加载
作用和TestSuite 的作用一样,组装用例代码,同样也需要使用TextTestRunner() 去执行
makeSuite() 如果要执行10个模块要写10个
但是TestLoader只需要一行代码
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
tpshop 登录
1. 打开浏览器 (一次)
2. 打开网⻚,点击登录 (每次)
3. 输入用户名密码验证码1,点击登录 (每次, 测试方法)
4. 关闭⻚面 (每次)
2. 打开网⻚,点击登录 (每次)
3. 输入用户名密码验证码2,点击登录 (每次, 测试方法)
4. 关闭⻚面 (每次)
2. 打开网⻚,点击登录 (每次)
3. 输入用户名密码验证码3,点击登录 (每次, 测试方法)
4. 关闭⻚面 (每次)
5. 关闭浏览器 (一次)
在每个用例执行前后都会自动调用, 方法名是固定的
def setUp(self): # 前置
# 每个用例执行之前都会自动调用
pass
def tearDown(self): # 后置
# 每个用例执行之后 都会自动调用
pass
# 方法前置 用例 方法后置
# 方法前置 用例 方法后置