自动化框架思路

本文详细介绍了Python内置的单元测试框架UnitTest,包括TestCase、TestSuite、TextTestRunner、TestLoader和Fixture的使用,以及方法、类和模块级别的Fixture控制。此外,还讨论了UnitTest的断言方法和自带的报告生成,以及Page Object设计模式在UI自动化测试中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、UnitTest框架

UnitTest是Python自带的一个单元测试框架,用它来做单元测试。
UnitTest核心要素
1、TestCase
2、TestSuite
3、TestRunner
4、TestLoader
5、Fixture
1、TestCast
说明:TestCase 就是测试用例
1.1 案例
定义一个实现加法操作的函数,并对该函数进行测试

1.2 定义测试用例
1、导包:import unittest
2、 定义测试类:新建测试类必须继承unittest.TestCase
3、定义测试方法:测试方法名称命名必须以test开头
1.3 执行测试用例
方式一:
使用pycharm在代码上点击鼠标右键,选择使用UnitTest运行
方式二:
调用 unittest.main() 来运行
在这里插入图片描述

2、TestSuite

说明:(测试套件)多条测试用例集合在一起,就是一个TestSuite
使用:

  1. 实例化: suite = unittest.TestSuite()
    (suite:为TestSuite实例化的名称)
    2.添加用例:
    方法一:suite.addTest(ClassName(“MethodName”))
    (ClassName:为类名;MethodName:为方法名)
    方法二suite.addTest(unittest.makeSuite(ClassName))
    (搜索指定ClassName内test开头的方法并添加到测试套件中)

提示:TestSuite需要配合TestRunner才能被执行
在这里插入图片描述

3、TextTestRunner(测试用例执行)

说明:TextTestRunner是用来执行测试用例和测试套件的
使用:
1. 实例化:runner = unittest.TextTestRunner()
2. 执行: runner.run(suite) # suite:为测试套件名称

4、TestLoader
说明:
1.用来加载TestCase到TestSuite中,即加载满足条件的测试用例,并把测试用例封装成测试套件。
2.使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件。

用法:
suite = unittest.TestLoader().discover(‘文件夹路径’, pattern="*.py")

说明:
自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件
pattern:为查找的.py文件的格式,默认为’test*.py’
也可以使用unittest.defaultTestLoader 代替 unittest.TestLoader()

运行:
runner = unittest.TextTestRunner()
runner.run(suite)

代码演示:
在这里插入图片描述

4.TestLoader与TestSuite区别

1.TestSuite需要手动添加测试用例,可以添加测试类(makeSuite(类名)),也可以添加测试类中某个测试方法(类名+方法名),更加灵活;

  1. TestLoader搜索指定目录下指定开头.py文件,并添加测试类中的所有的测试方法,不能指定添加测试方法,多个文件要运行时,更加简单方便

5.Fixture

说明:Fixture是一个概述,对一个测试用例环境的初始化和销毁就是一个Fixture
Fixture控制级别:

  1. 方法级别
  2. 类级别
  3. 模块级别

1.1方法级别

使用:

  1. 初始化(前置处理):
    def setUp(self) --> 首先自动执行
  2. 销毁(后置处理):
    def tearDown(self) --> 最后自动执行
  3. 运行于测试方法的始末,即:运行一次测试方法就会运行一次setUp和tearDown

1.2类级别

使用:

  1. 初始化(前置处理):
    @classmethod
    def setUpClass(cls): --> 首先自动执行
  2. 销毁(后置处理):
    @classmethod
    def tearDownClass(cls): --> 最后自动执行
  3. 运行于测试类的始末,即:每个测试类只会运行一次setUpClass和tearDownClass

1.3 模块级别

使用:

  1. 初始化(前置处理):
    def setUpModule() --> 首先自动执行
  2. 销毁(后置处理):
    def tearDownModule() --> 最后自动执行
  3. 运行于整个模块的始末,即:整个模块只会运行一次setUpModule和tearDownModule

2、UnitTest 断言

说明:让程序代替人为判断测试程序执行结果是否符合预期结果的过程

常用的断言方法:
1.assertEqual(预期结果, 实际结果)
2…assertIn(预期结果, 实际结果) --> 实际结果包含预期结果
在这里插入图片描述
在这里插入图片描述

3、自带报告生成操作图

在这里插入图片描述

4、po设计模式

· PO 的定义: 典型的 UI 自动化代码实现过程的一种设计模式
· 核心内容: 以页面为单位, 对页面的元素进行方法封装和抽取

·实现步骤:

1、根据页面创建页面对应的 page 文件

2、根据 PO 的分层思想创建对应的 3 个类
①页面名称Page(对象库层)
1、需要浏览器驱动对象
2、封装元素定位方法

②页面名称Handle (操作层)
1、对象库层封装的元素定位对象
2、封装元素操作方法

③页面名称Proxy (业务层)
1、操作层封装的元素操作对象
2、封装测试业务方法

3、在测试用例文件当中, 实例化业务执行对象, 并调用业务执行方法, 实现测试流程

代码演示-搜索页面:
在这里插入图片描述
在这里插入图片描述

代码演示-测试用例:
在这里插入图片描述

公共方法类
代码实现:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值