当前位置: 首页 > news >正文

web 自动化之 Unittest 四大组件

文章目录

      • 一、如何开展自动化测试
        • 1、项目需求分析,了解业务需求 web 功能纳入自动化测试
        • 2、选择何种方式实现自动化测试
      • 二、Unittest 框架
      • 三、TestCase 测试用例
      • 四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作
      • 五、TestSuite 测试套件 & TestLoader 用例加载器
        • 1、TestSuite 测试套件
        • 2、TestLoader 用例加载器-用例集
      • 六、TestRunner 测试运行器 执行用例,输出测试结果
        • 1、用例执行结果状态:
        • 2、unittest 提供生产测试报告的模块 TextTestRunner 生成文本格式测试报告

一、如何开展自动化测试

1、项目需求分析,了解业务需求 web 功能纳入自动化测试

web 功能:

  • 1、新功能 手工测试
  • 2、老功能 回归 冒烟用例 纳入自动化测试
2、选择何种方式实现自动化测试
  • 1、工具 robotframework
  • 2、独立搭建 web 自动化测试框架
  • 3、编写自动化测试用例
    一边写用例,一边调试用例脚本(用例编辑/封装/测试数据/脚本调试)
    结合jenkins进行持续集成
  • 4、执行自动化测试用例
    • 1、定时执行、一键式执行
    • 2、执行策略
      执行频率?—回归频率、转测试、上线前、
      自动化测试执行环境----集成测试环境、预发布环境
  • 5、测试报告
    测试结果的汇总
  • 6、维护脚本、优化框架
    企业自动化测试岗位:
    • 1、业务自动化测试 项目自动化测试框架已经构建了 工作内容: 维护框架+用例编辑
    • 2、平台自动化测试开发 参与自动测试框架构建与设计、+维护框架+用例编辑

二、Unittest 框架

Unittest 框架:框架=测试模块+测试管理模块+测试统计模块,python 的内置模块
import unittest
Unittest 框架四大组件:

  • 1、TestCase 测试用例
  • 2、TestFixture
  • 3、TestSuite
  • 4、TestRunner

三、TestCase 测试用例

unittest 中 TestCase 部分的规则:

  • 1、用例类必须继承 Unittest.TestCase,并且以 test 开头
  • 2、每条用例,都必须以 test 开头
  • 3、用例执行的顺序按照 ASCII:0-9 a-z A-Z 顺序来执行用例

unittest也可以通过命令运行:

  • 命令执行 TestShopnc 类下的所有用例: python -m unittest 用例文件名.用例类
  • 执行某一条用例: python -m unittest 用例文件名.用例类.用例名称
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")

四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作

Web 自动化:的前置操作及后置操作

class TestShop(unittest.TestCase):# 前置操作def setUp(self):# 加载项目print("setUp 执行每条用例前都会执行函数代码,有 n 条用例,则会执行 n 次")@ classmethoddef setUpClass(cls):# 前置操作:连接数据,打开浏览器print("setUpClass 执行用例前会执行 ,总共只执行一次")# 后置操作def tearDown(self) -> None:# 后置操作:浏览器的关闭print("tearDown执行完每条用例前都会执行代码,有n条用例,则会执行n次")@ classmethoddef tearDownClass(cls) -> None:# 退出浏览器,关闭数据库连接,清理数据print("tearDownClass执行完所有用例之后会执行代码 ,总共只执行一次")

五、TestSuite 测试套件 & TestLoader 用例加载器

TestSuite 测试套件 & TestLoader 用例加载器:把需要执行的用例汇总到一起

1、TestSuite 测试套件
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 添加一个用例suite.addTest(TestShop('test01_login'))suite.addTest(TestShop('test02_select_goods'))# 添加多个用例case_list = [TestShop('test03_into_cart'),TestShop('test04_pay_goods')]suite.addTests(case_list)# 执行 main 函数unittest.main(defaultTest="suite")
2、TestLoader 用例加载器-用例集
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 用例加载器# 用例   TestLoader()  suite# loadTestsFromTestCase  加载某个用例类(继承TestCase)下的所有用例# testcases = unittest.TestLoader().loadTestsFromTestCase(TestShop)# 利用默认加载器实现加载用例testcases = unittest.defaultTestLoader.discover('F:\Pycharm\TestShop\TestCase',pattern='test*.py')suite.addTests(testcases)unittest.main(defaultTest="suite")

六、TestRunner 测试运行器 执行用例,输出测试结果

1、用例执行结果状态:
  • 用例执行成功
  • E 用例有异常
  • F 用例执行失败(断言失败)
2、unittest 提供生产测试报告的模块 TextTestRunner 生成文本格式测试报告
import unittest
from TestReport.testcase_01 import TestCase01
# 加载用例
testcases = unittest.TestLoader().loadTestsFromTestCase(TestCase01)
# 执行用例,生产对应的测试报告TextTestRunner
with open('F:/Pycharm/TestShop/TestReport/report.txt','w+') as f:# 文件写入测试结果unittest.TextTestRunner(verbosity=2,stream=f).run(testcases)
http://www.xdnf.cn/news/405109.html

相关文章:

  • 【NextPilot日志移植】ULog
  • 文档外发安全:企业数据防护的最后一道防线
  • RabbitMQ 工作模式
  • JWT的介绍与在Fastapi框架中的应用
  • 单片机-STM32部分:13-1、蜂鸣器
  • 常用依赖文件库
  • kubernetes服务自动伸缩-VPA
  • ESP32开发入门(九):HTTP服务器开发实践
  • Day22打卡-复习
  • 【K8S学习之探针】详细了解就绪探针 readinessProbe 和存活探针 livenessProbe 的配置
  • Kotlin 异步初始化值
  • JVM类加载
  • 生产环境怎么移除console
  • WebSocket集成方案对比
  • 中华春节符号全球推广委员会——“金文形意书《易经》成果展”研学之旅
  • 【Spark】使用Spark集群搭建Yarn模式
  • Docker-配置私有仓库(Harbor)
  • mapreduce-wordcount程序2
  • PostgreSQL 中的序列(Sequence)
  • 力扣HOT100之二叉树:226. 翻转二叉树
  • WSL-Ubuntu 中安装 Git LFS 记录
  • 网络编程epoll和udp
  • 华为防火墙配置与网络协议实战指南:从基础到高阶排查
  • 破局智算瓶颈:400G光模块如何重构AI时代的网络神经脉络
  • 大模型的实践应用41-天气预测与分析决策系统:Qwen3(32B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法
  • RabbitMQ高并发秒杀、抢购系统、预约系统底层实现逻辑
  • ArcGIS+InVEST+RUSLE:水土流失模拟与流域管理的高效解决方案;水土保持专题地图制作
  • 《Python星球日记》 第63天:文本方向综合项目(新闻分类)
  • 危化品安全员职业发展方向的优劣对比
  • 人工智能时代:解锁职业新身份,从“认证师”到“工程师”的进阶之路