2023(春)Python程序设计作业6:基于unitest的Python测试
一、实验要求
- 学习unittest的基本概念和用法
- 能够独立编写unittest测试用例
- 熟悉测试驱动开发(TDD)思想
二、实验环境说明
- 操作系统:Windows/Linux/MacOS
- Python版本:3.x
- 集成开发环境:可选,建议使用PyCharm
三、实验目的
- 掌握Python中的单元测试框架unittest的使用方法
- 理解测试驱动开发(TDD)的基本思想和流程
- 培养编写高质量代码的习惯
四、实验题目
- 要求三角型的三个边长:A、B 和C(最大值不超过100)。当三边不可能构成三角形时提示错误。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”,其它情形则返回“一般三角形”。
- 完成:Python程序代码、设计测试用例(覆盖有效等价类、无效等价类),并给出基于unittest测试的代码。
trangile代码:
class triangle:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
# 判断是否是三角形
def IsTriangle(self):
if self.a + self.b > self.c and self.a + self.c > self.b and self.b + self.c > self.a:
return True
else:
return False
# 返回三角形类型:
# 一般三角形、等腰三角形、
# 等边三角形、不构成三角形
def getType(self):
if self.IsTriangle():
if self.a == self.b and self.b == self.c:
return "等边三角形"
elif self.a == self.b or self.a == self.c or self.b == self.c:
return "等腰三角形"
else:
return "一般三角形"
else:
return "不构成三角形"
testTriangel代码:
from triangle import triangle
import unittest
class TestTriangle(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_IsTriangle1(self):
self.tri = triangle(2, 3, 4)
self.IsTriangle = self.tri.IsTriangle()
self.assertEqual(self.IsTriangle, True)
def test_IsTriangle2(self):
self.tri1 = triangle(5, 10, 20)
self.IsTriangle1 = self.tri1.IsTriangle()
self.assertEqual(self.IsTriangle1, False)
def test_GetType1(self):
self.tri2 = triangle(3, 3, 3)
self.assertEqual(self.tri2.getType(), "等边三角形")
def test_GetType2(self):
self.tri3 = triangle(5, 5, 3)
self.assertEqual(self.tri3.getType(), "等腰三角形")
def test_GetType3(self):
self.tri4 = triangle(5, 4, 3)
self.assertEqual(self.tri4.getType(), "一般三角形")
def test_GetType4(self):
self.tri5 = triangle(5, 10, 20)
self.assertEqual(self.tri5.getType(), "不构成三角形")
if __name__ == '__main__':
# 构造测试集
suite = unittest.TestSuite()
suite.addTest(TestTriangle("test_IsTriangle1"))
suite.addTest(TestTriangle("test_IsTriangle2"))
suite.addTest(TestTriangle("test_GetType1"))
suite.addTest(TestTriangle("test_GetType2"))
suite.addTest(TestTriangle("test_GetType3"))
suite.addTest(TestTriangle("test_GetType4"))
# 执行测试
runner = unittest.TextTestRunner()
runner.run(suite)
结果:

相关推荐
【2021】Python3+Selenium3自动化测试(不含框架)
【学习前提】 1. 具备python3语言基础 【学习人群】 1. 手工测试人员学习UI自动化测试技能 2. 开发人员转岗测试开发岗位 3. 如具有丰富的自动化测经验,本课程可能并不满足你 学习计划: 学习计划: 1. 本视频系列与《从零开始学selenium自动化测试(基于python)》书籍相配套,两者结合起来学习,效果更加; 2. 每天2小时,1.5周即可学习完毕; 3. 结合课程(书籍中提供的)软件,多练习,多思考 课程目标: 旨在将学习者培养为UI(Selenium3)自动化测试(Wedriver,POM)、单元测试Unitest、Pytest。
科技成果进场交易前,评估备案环节需要准备哪些材料?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
人工智能基于类型化方法的训练数据获取与处理体系:构建数据中心化AI治理框架
内容概要:本文从类型化视角系统研究了人工智能训练数据的获取与处理体系,提出应构建多元化、高质量、合规有序的数据供给体系。文章首先分析数据获取的三种类型:来源类型(网络公开抓取、开源数据集、多源协同)、合规性类型(合法性困境与制度供给)以及产业组织类型(“隐身劳动”到多元协作)。随后构建数据处理的类型化体系,包括四方面:阶段类型(从“生语料”到“归档数据集”的五阶段流程)、操作类型(形成包含采集、清洗、标注、脱敏、去重、切片、向量化等在内的“数据操作工具箱”)、范式类型(推动从“模型中心”向“数据中心”的范式转型),以及管理类型(建立覆盖全生命周期的治理框架)。最后指出,AI治理正迈向以数据为中心的新范式,需通过制度完善、产业协同、技术创新与监管强化实现系统性突破。; 适合人群:从事人工智能研发、数据治理、算法合规及相关政策研究的专业人员,尤其适用于AI企业技术管理者、数据科学家、法律合规从业者及政府监管部门人员。; 使用场景及目标:①理解AI训练数据获取的合法路径与产业协作模式;②掌握数据处理的全流程阶段划分与核心技术操作;③推动“数据为中心”的AI开发范式转型;④构建符合法律与伦理要求的全生命周期数据治理体系。; 阅读建议:此资源理论与实践结合紧密,建议读者结合实际项目中的数据采集、清洗、标注与合规流程进行对照学习,并重点关注“数据操作工具箱”与“数据中心AI”范式,以提升数据工程化能力和治理水平。
政府科技管理者在推动区域科技创新时,如何精准配置科技成果与产业需求?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
基于LADRC控制器(三阶扩张状态观测器)的永磁同步直线电机位置环控制matlab仿真
内容概要:本文详细介绍了基于LADRC控制器(三阶扩张状态观测器)的永磁同步直线电机位置环控制系统的Matlab仿真研究,系统阐述了该先进控制策略在高精度运动控制中的应用。文章围绕LADRC的核心思想——通过扩张状态观测器实时估计并补偿系统内部动态不确定性及外部扰动,从而显著提升控制系统的鲁棒性、抗干扰能力和动态响应性能展开论述。内容涵盖控制器的整体设计架构、三阶扩张状态观测器的数学建模与实现方法、非线性反馈控制律的构建、关键参数的整定策略,并通过Matlab/Simulink搭建完整的仿真模型,与传统PID控制进行了对比实验,充分验证了LADRC在抑制负载扰动、减小跟踪误差、加快响应速度等方面的优越性。; 适合人群:具备自动控制理论基础和Matlab/Simulink仿真经验的电气工程、自动化、机电一体化及相关专业的硕士研究生、博士研究生、科研人员及从事高性能电机驱动系统开发的工程技术人员。; 使用场景及目标:①用于高性能永磁同步直线电机控制系统的设计、分析与性能优化;②作为自抗扰控制(ADRC)及其变体(LADRC)算法的教学案例与科研仿真平台;③深入理解扩张状态观测器的工作机理及扰动补偿机制;④对比研究LADRC与传统PID等线性控制器在动态性能、鲁棒性方面的差异; 阅读建议:建议结合文中详述的仿真模型与参数设置进行动手实践,重点关注扩张状态观测器的设计过程与扰动估计的实时性,通过修改系统参数、引入不同类型的外部负载扰动来测试控制器的鲁棒性,并尝试调整观测器带宽与控制器带宽以观察其对系统性能的影响,从而深化对LADRC核心原理的理解。


