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

day16 python(4)——UnitTest

【没有所谓的运气🍬,只有绝对的努力✊】

目录

1、UnitTest框架介绍

1.1 UnitTest框架

1.2 unitTest的组成(5部分)

1.2.1 TestCase(测试用例)

1.2.2 TestSuit 和 TestRunner 

【方法1】

【方法2】

1.2.3 查看结果

1.2.4 案例练习

1.2.5  TestLoader测试加载

1.2.6  Fixture测试夹具

3、断言

3.1 断言练习

4、参数化

5、跳过

6、测试报告HTMLTestRunner

7、小结


1、UnitTest框架介绍

参考文档:unittest --- 单元测试框架 — Python 3.13.1 文档

1.1 UnitTest框架


1.2 unitTest的组成(5部分)

         

1.2.1 TestCase(测试用例)

"""
使用 unittest 练习  TestCase用例
"""
# 1、导入包
import unittest# 2、定义测试类
class TestDemo(unittest.TestCase):# 3、写测试方法def test_method1(self):print('测试方法1')def test_method2(self):print('测试方法2')# 4、执行测试用例 (鼠标右键即可)

1.2.2 TestSuit 和 TestRunner 

【方法1】
"""使用 testSuit 和 testRunner 完成练习
"""
import unittestfrom day01_testcase import TestDemo1
from day01_testcase2 import TestDemo2suite = unittest.TestSuite()# 方法1 套件对象.addTest(测试类名('方法名'))
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method2'))runner = unittest.TextTestRunner()
runner.run(suite)

【方法2】
"""使用 testSuit 和 testRunner 完成练习
"""
import unittestfrom day01_testcase import TestDemo1
from day01_testcase2 import TestDemo2suite = unittest.TestSuite()# 方法1
# suite.addTest(TestDemo1('test_method1'))
# suite.addTest(TestDemo1('test_method2'))
# suite.addTest(TestDemo2('test_method1'))
# suite.addTest(TestDemo2('test_method2'))# 方法2
suite.addTest(unittest.makeSuite(TestDemo1))   # makeSuite 在python的3.13版本中已经被去除了。
suite.addTest(unittest.makeSuite(TestDemo2))runner = unittest.TextTestRunner()
runner.run(suite)

1.2.3 查看结果

1.2.4 案例练习

1.2.5  TestLoader测试加载

1.2.6  Fixture测试夹具

   

 


import unittestclass TestLogin(unittest.TestCase):def setUp(self) -> None:    # 每个用例执行前都会执行print('打开网页。。。。。')def tearDown(self) -> None:  # 每个用例执行结束都会执行print('关闭页面。。')@classmethoddef setUpClass(cls) -> None:print('1、打开浏览器')@classmethoddef tearDownClass(cls) -> None:print("5、关闭浏览器")def test_login1(self):print('执行登录01')def test_login2(self):print('执行登录02')

3、断言

3.1 断言练习

        

4、参数化


pip install parameterized 

import unittest
from parameterized import parameterized
from case.login import login# 4、准备测试数据 并传参  (使用装饰器  @)
data = [('admin','123456','登录成功'),('test','123456','登录失败'),('admin','1234566','登录失败'),('test','1234567','登录失败')
]
# 1、定义测试类
class TestLogin(unittest.TestCase):# 2、书写测试方法@parameterized.expand(data)def test_login(self,username,password,expect):self.assertEqual(expect,login(username,password))

         


       

import unittest
from parameterized import parameterized
from case.login import login
import json# 4、准备测试数据 并传参  (使用装饰器  @)
# data = [
#     ('admin','123456','登录成功'),
#     ('test','123456','登录失败'),
#     ('admin','1234566','登录失败'),
#     ('test','1234567','登录失败')
# ]def buildData():data = []with open('info.json', 'r', encoding='utf-8') as f:json_list = json.load(f)for i in json_list:data.append((i['username'], i['password'], i['expect']))return data
# 4、读取json文件,并转换成 [(),(),()] 格式
data = buildData()# 1、定义测试类
class TestLogin(unittest.TestCase):# 2、书写测试方法@parameterized.expand(data)def test_login(self,username,password,expect):self.assertEqual(expect,login(username,password))
[{"desc": "正确的用户名和密码","username": "admin","password": "123456","expect": "登录成功"},{"desc": "错误的用户名","username": "test","password": "123456","expect": "登录失败"},{"desc": "错误的密码","username": "admin","password": "1234567","expect": "登录失败"},{"desc": "错误的用户名和密码","username": "test","password": "1234567","expect": "登录失败"}
]

5、跳过

import unittestversion = 30class TestDemo(unittest.TestCase):@unittest.skip('没有原因,就是测试下跳过')def test_01(self):print('测试01')@unittest.skipIf(version >= 30,"版本大于30的跳过执行")def test_02(self):print('测试02')def test_03(self):print('测试03')

6、测试报告HTMLTestRunner


代码流程:

7、小结


黑马的python课程到此结束啦。但是感觉 unitTest那块,还需要加强下,准备找其他unitTest视频补充下。

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

相关文章:

  • Kafka快速扫描
  • python打包时候遇到问题:ImportError: DLL load failed while importing _ufuncs: 找不到指定的模块
  • 【6】期末复习C#第6套
  • 开源轮子 - EasyExcel01(核心api)
  • SpringBoot3+Vue3开发在线考试系统
  • 2. Kafka入门-开发环境准备
  • Halcon中histo_2dim(Operator)算子原理及应用详解
  • TCP 与 UDP
  • ubuntu 安装更新 ollama新版本
  • Numpy基本操作
  • 本地部署webrtc应用怎么把http协议改成https协议?
  • 基于xiaothink对Wanyv-50M模型进行c-eval评估
  • 使用k6进行kafka负载测试
  • Unity A*算法实现+演示
  • 浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码
  • 如何设计高效的商品系统并提升扩展性:从架构到实践的全方位探索
  • 使用计算机创建一个虚拟世界
  • datasets笔记:两种数据集对象
  • 【ETCD】【Linearizable Read OR Serializable Read】ETCD 数据读取:强一致性 vs 高性能,选择最适合的读取模式
  • 【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数
  • 不常用命令指南
  • spring mvc | servlet :serviceImpl无法自动装配 UserMapper
  • STM32 HAL库之串口接收不定长字符
  • Pyqt6的tableWidget填充数据
  • ASP.NET Core - 依赖注入 自动批量注入
  • UVM 验证方法学之interface学习系列文章(十一)virtual interface 再续篇
  • 面试题整理5----进程、线程、协程区别及僵尸进程处理
  • OpenTK 中帧缓存的深度解析与应用实践
  • 第2节-Test Case如何调用Object Repository中的请求并关联参数
  • 【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯