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

Python基础学习016__UnitTest

# UnitTest是python自带的一个单元测试框架,不需要额外安装
# 也是自动化脚本执行框架,使用UnitTest来管理,运行多个框架
# 为什么使用:能够组织多个用例去执行.提供了丰富的断言方法,能够生成测试报告
# 核心要素:
# Testcase:测试用例:这个测试用例是UnitTest的组成部分,不是手工和自动化中所说的用例(Test Case)
# 每一个TestCase都是一个代码文件,这这个文件中书写真正的代码
# TestSuite:测试套件,用来管理,组装(打包)多个TestCase
# TestRunner:测试执行:用来执行TestSuite
# TestLoader:测试加载:对TestSuite功能的补充
# Fixture:测试夹具:书写在TestCase中的,是一种代码结构,在每个方法执行前后都会执行的内容.
# 可以将用例的前置后置条件放在这里
# 学习UnitTest框架的TestCase书写
# 1.导包
import unittest# 2.自定义类继承UnitTest的TestCase类
class TestcaseDemo1(unittest.TestCase):  # 在定义类时继承UnitTest的TestCase类#     3.书写要求:测试方法必须以test_开头def test_method1(self):print('方法1')def test_method2(self):print('方法2')
# 4.执行用例:
# 将光标放在类名后面运行,执行类中的所欲方法.
# 将光标放在方法名的后边运行,只执行当前的方法class TestcaseDemo2(unittest.TestCase):#     3.书写要求:测试方法必须以test_开头def test_method2_1(self):print('方法2-1')def test_method2_2(self):print('方法2-2')# 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
# 解决方案1:新建一个文件,将代码复制进去即可
# 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
# 中的edit选项(有的叫做edit,有的叫做edit configurations...),
# 将运行异常的这个代码从Python这个分类里移除即可

# 学习UnitTest框架的TestCase书写
# 1.导包
import unittest# 2.自定义类继承UnitTest的TestCase类
class TestcaseDemo1_1(unittest.TestCase):  # 在定义类时继承UnitTest的TestCase类#     3.书写要求:测试方法必须以test_开头def test_method1(self):print('方法1')def test_method2(self):print('方法2')
# 4.执行用例:
# 将光标放在类名后面运行,执行类中的所欲方法.
# 将光标放在方法名的后边运行,只执行当前的方法# 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
# 解决方案1:新建一个文件,将代码复制进去即可
# 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
# 中的edit选项(有的叫做edit,有的叫做edit configurations...),
# 将运行异常的这个代码从Python这个分类里移除即可

# 学习UnitTest框架的TestCase书写
# 1.导包
import unittest# 2.自定义类继承UnitTest的TestCase类
class TestcaseDemo1_2(unittest.TestCase):  # 在定义类时继承UnitTest的TestCase类#     3.书写要求:测试方法必须以test_开头def test_method1(self):print('方法1')def test_method2(self):print('方法2')
# 4.执行用例:
# 将光标放在类名后面运行,执行类中的所欲方法.
# 将光标放在方法名的后边运行,只执行当前的方法# 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
# 解决方案1:新建一个文件,将代码复制进去即可
# 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
# 中的edit选项(有的叫做edit,有的叫做edit configurations...),
# 将运行异常的这个代码从Python这个分类里移除即可
"""
学习TestSuite和TestRunner
"""
# 1.导包
import unittestfrom TestCase.hpp_TestCase import TestcaseDemo1, TestcaseDemo2
from TestCase.hpp_TestCase1 import TestcaseDemo1_1
from TestCase.hpp_TestCase2 import TestcaseDemo1_2# 2.实例化套件对象
suite = unittest.TestSuite()
# 3.使用套件对象添加用例方法
# 3.1suite.addTest(测试类名('方法名'),名称直接去复制,不要手写
suite.addTest(TestcaseDemo1('test_method1'))
suite.addTest(TestcaseDemo1_1('test_method1'))
suite.addTest(TestcaseDemo2('test_method2_1'))
# 3.2添加一个测试类中的所有方法:suite.addTest(unittest.makeSuite(测试类名))
# makeSuite即将废弃,所以有横线提示
suite.addTest(unittest.makeSuite(TestcaseDemo1_2))
# 4.实例化运行对象
runner = unittest.TextTestRunner()          # 框架固定写法
# 5.使用运行对象去执行套件对象:运行对象runner,调用run方法,参数是套件对象suite
runner.run(suite)
# 什么情况下用TestLoader:TestCase有很多,使用一行代码加载所有TestCase
# 1.导包
import unittest# 2.实例化测试加载对象,并添加用例,加载完成后得到的是suite对象
# 在一个项目里,测试用例通常放在一个目录里unittest.TestLoader().discover(用例所在的路径(相对),用例代码文件名使用*通配符)
# suite = unittest.TestLoader().discover('.', 'hpp_TestCase*')
# 使用默认的加载对象并加载用例
suite = unittest.defaultTestLoader.discover('TestCase', 'hpp_TestCase*')
# 3.运行对象执行套件对象
# runner = unittest.TextTestRunner()
# runner.run(suite)
unittest.TextTestRunner().run(suite)

# 在某些特定情况下会自动执行的一种代码结构
# 方法级别:用例代码执行前后都会调用的结构
# 方法执行之前:def setup(self):在每个测试方法执行之前都会执行
# 方法执行之后:def teardown(self):每个测试方法执行之后都会执行
# --------------------------------------------------
# 类级别:在每个测试类中所有方法执行前后都会自动调用,在整个类中只会执行一次
# 类级别的Fixture方法,是一个类方法
# 类中所有方法之前
"""
@classmethod
def setupClass(cls):pass
"""
# 类中所有方法之后
"""
@classmethod
def teardownClass(cls):pass
"""
# ------------------------------------------------------------------
# 模块级别(了解):在每个代码文件执行前后执行的代码结构,写在类外边,直接定义函数即可
# 代码文件之前:def setupModule()
# 代码文件之后: def teardownModule()
# ----------------------------------------------------------------
# 方法级别和类级别的Fixture方法,不一定非要都前后都有,根据需求写就可以
# ---------------------------------------------------------------
import unittestclass TestLogin(unittest.TestCase):@classmethoddef setUpClass(cls):print("打开浏览器")@classmethoddef tearDownClass(cls):print('关闭浏览器')def setUp(self):print("测试前输入网址")def tearDown(self):print("测试后关闭当前页")def test_1(self):print('测试数据1')def test_2(self):print('测试数据2')

http://www.lryc.cn/news/221224.html

相关文章:

  • 一物一码需求,标签制作功能轻松解决
  • 【Linux】七、基础IO
  • Elasticsearch语法之Term query不区分大小写
  • 远程管理SSH服务
  • Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化
  • Oracle锁处理
  • 持续集成交付CICD:安装Jenkins Slave(从节点)
  • Dart(一):Dart入门
  • [动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍
  • 【EI会议投稿】第三届计算机、人工智能与控制工程国际学术会议 (CAICE 2024)
  • python 之 列表推导式
  • 【左程云算法全讲2】链表、栈、队列、递归、哈希表和有序表
  • SQL第三次上机作业
  • 前端事件案例补充
  • 3.8 Android eBPF HelloWorld调试(二)
  • xss如何快速提取cookies
  • 在 ASP.NET C# 中用Aspose.PDF将 PDF 页面转换为 JPG 图像
  • Docker Compose安装milvus向量数据库单机版-milvus基本操作
  • 极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队
  • ES6~ES13新特性(二)
  • soildwork2022怎么样添加螺纹孔?
  • 【t5 pytorch版源码学习】t5-pegasus-pytorch源码学习
  • 【springboot】spring的Aop结合Redis实现对短信接口的限流
  • 【MedusaSTears】怎么禁用edge浏览器截图功能?
  • 【计算机网络】(谢希仁第八版)第三章课后习题答案
  • 批量异步任务处理
  • 宜昌市公安局、点军区政府与中科升哲达成战略合作,共建视频图像联合创新实验室
  • java版小程序商城免费搭建-直播商城平台规划及常见的营销模式有哪些?电商源码/小程序/三级分销
  • Linux下yum源配置实战
  • JSONP 跨域访问(2), JSONP劫持