zoukankan      html  css  js  c++  java
  • 软件工程(2019)第二次作业

    (一)选择开发工具

      本次团队编程经过讨论我准备使用Eclipse作为开发工具,由于本机已经安装了Eclipse所以下面将Eclipse的界面截图如下:
    Eclipse主界面截图

    (二)练习自动单元测试技术

      由于本机中已经安装了Python环境并已经安装好了Python的单元测试Unittest,所以这次自动单元测试技术练习使用了Python完成。以下就是练习代码以及测试结果:
      Unittest是基于流行的Java测试框架JUnit的一种Python测试框架,相比于Python之前的单元测试框架Doctest来讲,Unittest更灵活,更强大;可以以结构化方式编写庞大而详尽的测试集。
      下面是一个程序模块my_math的测试实例,我们使用Unittest中的TestCase类编写y一个测试。(my_math模块中包含了一个计算乘积的函数product)

    import unittest, my_math
    
    class ProductTestCase(unittest.TestCase):
        def test_integers(self):
            for x in range(-10, 10):
                for y in range(-10, 10):
                    p = my_math.product(x, y)
                    self.assertEqual(p, x * y, 'Integer multiplication failed')
    
        def test_floats(self):
            for x in range(-10, 10):
                for y in range(-10, 10):
                    x = x / 10
                    y = y / 10
                    p = my_math.product(x, y)
                    self.assertEqual(p, x * y, 'Float multiplication failed')
    
    if __name__=='__main__': unittest.main()
    
    

      函数unittest.main负责运行测试,实例化所有的TestCase子类,并运行所有名称以test打头的方法。
      my_math内部的代码如下:

    def product(x, y):
        return x * y
    

      则输出如下:
    成功1
      当然,完全正确的结果显然没有什么趣味性,下面我对product函数进行一些修改:

    def product(x, y):
        if x == 3 and y == 7:
            return 'An insidious bug has surfaced!'
        else:
            return x * y
    

      则输出如下,可以看到两个测试结果只有一个通过了:
    成功2

  • 相关阅读:
    ACM HDU 1176 免费馅饼(DP)
    PHP下载时中文文件名乱码的问题
    NYOJ 27
    NYOJ 148
    NYOJ 8
    NYOJ 138
    NYOJ 461
    POJ 1200
    STL排序算法
    NYOJ 523
  • 原文地址:https://www.cnblogs.com/ulyssesgao/p/10692644.html
Copyright © 2011-2022 走看看