2023(春)Python程序设计作业6:基于unitest的Python测试

软工211-428-卢天奕。 2023-春-学生 2023-06-15 17:29:24

一、实验要求

  • 学习unittest的基本概念和用法
  • 能够独立编写unittest测试用例
  • 熟悉测试驱动开发(TDD)思想

二、实验环境说明

  • 操作系统:Windows/Linux/MacOS
  • Python版本:3.x
  • 集成开发环境:可选,建议使用PyCharm

三、实验目的

  • 掌握Python中的单元测试框架unittest的使用方法
  • 理解测试驱动开发(TDD)的基本思想和流程
  • 培养编写高质量代码的习惯

四、实验题目

  • 要求三角型的三个边长:A、B 和C(最大值不超过100)。当三边不可能构成三角形时提示错误。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”,其它情形则返回“一般三角形”。  
  • 完成:Python程序代码、设计测试用例(覆盖有效等价类、无效等价类),并给出基于unittest测试的代码。

1.  三角形类代码 [参考]


 
  1. class Triangle:

  2. def __init__(self,a,b,c):

  3. self.a = a

  4. self.b = b

  5. self.c = c

  6.  
  7. # 判断是否是三角形

  8. def IsTriangle(self):

  9. pass # 添加三角形判断代码

  10.  
  11. # 返回三角形类型:

  12. # 一般三角形、等腰三角形、

  13. # 等边三角形、不构成三角形

  14. def getType(self):

  15. pass # 添加三角形类型代码

2.  测试用例类代码 [参考]


 
  1. from Triangle import Triangle

  2. import unittest

  3.  
  4. class TestTriangle(unittest.TestCase):

  5. def setUp(self):

  6. pass

  7.  
  8. def tearDown(self):

  9. pass

  10.  
  11. def test_IsTriangle1(self): # Test case 1

  12. self.tri = Triangle(2,3,4)

  13. self.IsTriangle = self.tri.IsTriangle()

  14. self.assertEqual(self.IsTriangle,True)

  15.  
  16. def test_IsTriangle2(self): # Test case 2

  17. pass # 添加你的测试代码

3.  运行测试用例


 
  1. if __name__ == '__main__':

  2. # 构造测试集

  3. suite = unittest.TestSuite()

  4. suite.addTest(TestTriangle("test_IsTriangle1"))

  5. suite.addTest(TestTriangle("test_IsTriangle2"))

  6.  
  7. # 执行测试

  8. runner = unittest.TextTestRunner()

  9. runner.run(suite)

4.  运行结果


 
  1. ..

  2. ----------------------------------------------------------------------

  3. Ran 2 tests in 0.000s

  4.  
  5. OK

 

附录、简易示例

1. 编写测试用例类


 
  1. import unittest

  2.  
  3. class TestStringMethods(unittest.TestCase):

  4.  
  5. def test_upper(self):

  6. self.assertEqual('foo'.upper(), 'FOO')

  7.  
  8. def test_isupper(self):

  9. self.assertTrue('FOO'.isupper())

  10. self.assertFalse('Foo'.isupper())

  11.  
  12. def test_split(self):

  13. s = 'hello world'

  14. self.assertEqual(s.split(), ['hello', 'world'])

  15. # check that s.split fails when the separator is not a string

  16. with self.assertRaises(TypeError):

  17. s.split(2)

2. 运行测试用例


 
  1. if __name__ == '__main__':

  2. unittest.main()

3. 运行结果


 
  1. ..

  2. ----------------------------------------------------------------------

  3. Ran 2 tests in 0.000s

  4.  
  5. OK

 

...全文
18 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
鞠小林 教师 2023-06-15
  • 打赏
  • 举报
回复

@CSDN-Ada助手这位同学的作业是简单copy老师的示例程序,请根据以下要求:三角型的三个边长:A、B 和C(最大值不超过100)。当三边不可能构成三角形时提示错误。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”,其它情形则返回“一般三角形”。
完成:Python程序代码、设计测试用例(覆盖有效等价类、无效等价类),并给出基于unittest测试的代码。

CSDN-Ada助手 2023-06-15
  • 举报
回复
@鞠小林 好的,这道题目的要求是实现一个判断三角形类型的程序,并且需要设计测试用例以覆盖有效等价类和无效等价类。以下是参考代码和测试用例,供参考: ```python class Triangle: def __init__(self, a, b, c): self.a = a self.b = b self.c = c def is_triangle(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 get_type(self): if not self.is_triangle(): return "不是三角形" elif self.a == self.b == self.c: return "等边三角形" elif self.a == self.b or self.a == self.c or self.b == self.c: return "等腰三角形" else: return "一般三角形" import unittest class TestTriangle(unittest.TestCase): def test_is_triangle(self): t1 = Triangle(1, 2, 3) t2 = Triangle(2, 2, 2) t3 = Triangle(3, 4, 5) t4 = Triangle(1, 2, 5) self.assertEqual(t1.is_triangle(), False) # 无效等价类,不能构成三角形 self.assertEqual(t2.is_triangle(), True) # 有效等价类,等边三角形 self.assertEqual(t3.is_triangle(), True) # 有效等价类,一般三角形 self.assertEqual(t4.is_triangle(), False) # 无效等价类,不能构成三角形 def test_get_type(self): t1 = Triangle(1, 2, 3) t2 = Triangle(2, 2, 2) t3 = Triangle(3, 4, 5) t4 = Triangle(3, 3, 4) t5 = Triangle(1, 1, 2) self.assertEqual(t1.get_type(), "不是三角形") # 无效等价类,不能构成三角形 self.assertEqual(t2.get_type(), "等边三角形") # 有效等价类,等边三角形 self.assertEqual(t3.get_type(), "一般三角形") # 有效等价类,一般三角形 self.assertEqual(t4.get_type(), "等腰三角形") # 有效等价类,等腰三角形 self.assertEqual(t5.get_type(), "不是三角形") # 无效等价类,不能构成三角形 ``` 在测试用例中,我们分别测试了`is_triangle()`和`get_type()`两个方法。对于`is_triangle()`方法,我们设计了两个有效等价类和两个无效等价类。对于`get_type()`方法,我们设计了三个有效等价类和一个无效等价类。可以根据实际情况调整测试用例设计。 希望能对你有所帮助!

163

社区成员

发帖
与我相关
我的任务
社区描述
软件工程老师
python 高校 江苏省·南通市
社区管理员
  • juking@ntu
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧