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

软工211王正栋 2023-春-学生 2023-06-21 14:04:00

一、实验要求

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

二、实验环境说明

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

三、实验目的

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

四、实验题目

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

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

class Triangle:
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c
 
    # 判断是否是三角形
    def IsTriangle(self):
        pass  # 添加三角形判断代码
 
    # 返回三角形类型:
    #  一般三角形、等腰三角形、
    #  等边三角形、不构成三角形
    def getType(self):
        pass  # 添加三角形类型代码

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

from Triangle import Triangle
import unittest
 
class TestTriangle(unittest.TestCase):
   def setUp(self):
       pass
 
   def tearDown(self):
       pass
 
   def test_IsTriangle1(self):     # Test case 1
       self.tri = Triangle(2,3,4)
       self.IsTriangle = self.tri.IsTriangle()
       self.assertEqual(self.IsTriangle,True)
 
   def test_IsTriangle2(self):     # Test case 2
       pass  # 添加你的测试代码

3.  运行测试用例

if __name__ == '__main__': 
     # 构造测试集
     suite = unittest.TestSuite() 
     suite.addTest(TestTriangle("test_IsTriangle1"))
     suite.addTest(TestTriangle("test_IsTriangle2"))
 
     # 执行测试
     runner = unittest.TextTestRunner() 
     runner.run(suite)

4.  运行结果

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
 
OK

附录、简易示例

1. 编写测试用例类

import unittest
 
class TestStringMethods(unittest.TestCase):
 
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')
 
    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())
 
    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

2. 运行测试用例

if __name__ == '__main__':
    unittest.main()

3. 运行结果

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
 
OK

截图

 

 

...全文
68 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

163

社区成员

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

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