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.mzph.cn/diannao/82788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

42、在.NET 中能够将⾮静态的⽅法覆写成静态⽅法吗?

在.NET中,不能将非静态方法(实例方法)直接覆写(Override)为静态方法(Static Method)。以下是关键原因和解释: 1. 方法绑定的本质区别 实例方法:属于对象的实例&#xf…

8天Python从入门到精通【itheima】-1~5

目录 1节: 1.Python的优势: 2.Python的独具优势的特点: 2节-初识Python: 1.Python的起源 2.Python广泛的适用面: 3节-什么是编程语言: 1.编程语言的作用: 2.编程语言的好处:…

3D迷宫探险:伪3D渲染与运动控制的数学重构

目录 3D迷宫探险:伪3D渲染与运动控制的数学重构引言第一章 伪3D渲染引擎1.1 射线投射原理1.2 纹理透视校正第二章 迷宫生成算法2.1 图论生成模型2.2 复杂度控制第三章 第一人称控制3.1 运动微分方程3.2 鼠标视角控制第四章 碰撞检测优化4.1 层级检测体系4.2 滑动响应算法第五章…

mac一键安装gpt-sovit教程中,homebrew卡住不动的问题

mac一键安装gpt-sovit教程 仅作为安装过程中解决homebrew卡住问题的记录 资源地址 https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/znoph9dtetg437xb#mlAoP 下载一键包 下载后并解压,找到install for mac.sh,终端执行bash空格拖拽in…

git 远程仓库管理详解

Git 的远程仓库管理是多人协作和代码共享的核心功能。以下是 Git 远程仓库管理的详细说明,包括常用操作、命令和最佳实践。 1. 什么是远程仓库? 远程仓库(Remote Repository):存储在网络服务器上的 Git 仓库&#xff0…

【超详细教程】安卓模拟器如何添加本地文件?音乐/照片/视频一键导入!

作为一名安卓开发者或手游爱好者,安卓模拟器是我们日常工作和娱乐的重要工具。但很多新手在使用过程中常常遇到一个共同问题:**如何将电脑本地的音乐、照片、视频等文件导入到安卓模拟器中?**今天,我将为大家带来一份全网最详细的…

使用vite重构vue-cli的vue3项目

一、修改依赖 首先修改 package.json,修改启动方式与相应依赖 移除vue-cli并下载vite相关依赖,注意一些peerDependency如fast-glob需要手动下载 # 移除 vue-cli 相关依赖 npm remove vue/cli-plugin-babel vue/cli-plugin-eslint vue/cli-plugin-rout…

uniapp|实现手机通讯录、首字母快捷导航功能、多端兼容(H5、微信小程序、APP)

基于uniapp实现带首字母快捷导航的通讯录功能,通过拼音转换库实现汉字姓名首字母提取与分类,结合uniapp的scroll-view组件与pageScrollTo API完成滚动定位交互,并引入uni-indexed-list插件优化索引栏性能。 目录 核心功能实现动态索引栏生成​联系人列表渲染​滚动定位联动性…

C#中SetProperty方法使用

SetProperty 是 MVVM(Model-View-ViewModel) 模式中用于实现 属性变更通知(INotifyPropertyChanged) 的核心方法,主要用于在属性值变化时自动更新 UI 绑定。 1. SetProperty 的基本作用 更新字段值:修改属性…

MYSQL 全量,增量备份与恢复

目录 一 数据备份的重要性 1 数据备份的重要性 2 数据库备份类型 2.1 从物理与逻辑的角度分类 2.2. 从数据库的备份策略角度分类从数据库的备份策略角度,数据库的备份可分为完全备份、差异备份和增量备份。 3 常见的备份方法 3.1 物理冷备份 物理冷备份时需要在数据库处…

豆瓣电影Top250数据工程实践:从爬虫到智能存储的技术演进(含完整代码)

目录 引言:当豆瓣榜单遇见大数据技术 项目文档 1.1 选题背景 1.2 项目目标 2. 项目概述 2.1 系统架构设计 2.2 技术选型 2.3 项目环境搭建 2.3.1 基础环境准备 2.3.2 爬虫环境配置 2.3.3 Docker安装ES连接Kibana 安装IK插件 2.3.4 vscode依赖服务安装 3. 核心模…

深度 |国产操作系统“破茧而出”:鸿蒙电脑填补自主生态空白

真心为国内能有像华为这样的技术型公司而自豪,一步步突围技术封锁。从这篇信息,可以给软件从业者一个启示:鸿蒙生态将是一个新的机会,值得好好把握。 鸿蒙电脑正成为中国电子信息技术新坐标。 超10亿鸿蒙生态设备、2800家鸿蒙智…

【网络安全】——大端序(Big-Endian)​​和​​小端序(Little-Endian)

字节序(Endianness)是计算机系统中多字节数据(如整数、浮点数)在内存中存储或传输时,​​字节排列顺序​​的规则。它分为两种类型:​​大端序(Big-Endian)​​和​​小端序&#xf…

六个仓库合并为一个仓库,保留master和develop分支的bat脚本

利用git subtree可以实现多个仓库合并为一个仓库,手动操作起来太麻烦了,今天花了点时间写了一个可执行的脚本,现在操作起来就方便多了。 1、本地新建setup.bat文件 2、用编辑器打开(我用的是Notepad) 3、把下面代码…

使用定时器监视当前PID 如果当前程序关闭 UI_Core.exe 也随之自动关闭实现方法

使用定时器监视当前PID 如果当前程序关闭 UI_Core.exe 也随之自动关闭实现方法 描述: C20 QT6.9 VS2022 中使用QProcess::startDetached(“UI_Core.exe”, QStringList(), QString(), &UI_Manage_pid);是启动目标程序 能否同时告诉目标程序当前宿主程序的PID,在UI_CORE.EX…

神经网络是如何工作的

人工智能最核心的技术之一,就是神经网络(Neural Networks)。但很多初学者会觉得它是个黑盒:为什么神经网络能识别图片、翻译语言,甚至生成文章? 本文用图解最小代码实现的方式,带你深入理解&am…

LeetCode热题100 两数之和

目录 两数之和题目解析方法一暴力求解代码 方法二哈希代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸🥸 C语言 🐿️🐿️🐿…

在线服务器具体是指什么?

在线服务器主要是指一种能够随时进行网络连接、管理和操作的服务器,在线服务器是通过互联网或者是本地网络,来为企业和用户提供数据存储和网络服务的,在线服务器也可以是物理服务器或者是虚拟服务器,能够根据远程访问工具进行管理…

OSPF综合性实验

实验拓扑: 第一步:进行子网划分 172.16.0.0/17 172.16.0000 00 00.00000000 -- area1 172.16.0.1/22 -- AR1--G0/0/0 172.16.0.2/22 -- AR2--G0/0/0 172.16.0.3/22 -- AR3--G0/0/0 172.16.4.1/22 -- AR1-- Lo0 172.16.8.2/22 -- AR2-- Lo0 172.16.12.3/…

WEB前端表单及表格标签综合案例

表单标签综合案例&#xff1a; 源代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…