zoukankan      html  css  js  c++  java
  • 【Python基础】lpthw

      一、自动化测试的目的

      利用自动化的测试代码取代手动测试,使得程序中的一些初级bug可以被自动检出,而无需人工进行重复繁琐的测试工作。

      二、编写测试用例

      利用上一节编写的skeleton,这次在projects中创建一个ex47文件夹,将骨架文件复制到ex47下,然后执行以下操作:

      1. 将所有带NAME的东西全部重命名为ex47

      2. 将所用文件中的NAME全部改为ex47

      3. 删除所有的.pyc文件,确保清理干净(该类文件为编译结果?)

      注意,书中提示可以通过执行nosetests命令来运行测试,但此步需要cd到tests的上级目录,然后直接在命令行键入nosetests运行。

      下面在bin同级的ex47文件夹下创建一个game.py,并写一些类作为测试对象,如

     1 class Room(object):
     2 
     3     def __init__(self, name, description):
     4         self.name = name
     5         self.description = description
     6         self.paths = {}
     7 
     8     def go(self, direction):
     9         return self.paths.get(direction, None)      #dict.get(key, default=None) 查找键,指定键不存在时,返回default值
    10 
    11     def add_paths(self, paths):
    12         self.paths.update(paths)        #dict.update(dict2) 将dict2里的键值对更新到dict里

      下面将单元测试骨架修改成下面的样子:

     1 from nose.tools import *
     2 from ex47.game import Room
     3 
     4 def test_room():
     5     gold = Room('GoldRoom',
     6                 """This room has gold in it you can grab. There's a
     7                 door to it in the north.""")
     8     assert_equal(gold.name, "GoldRoom")
     9     assert_equal(gold.paths, {})
    10 
    11 def test_room_paths():
    12     center = Room('Center', "Test room in the center.")
    13     north = Room('North', "Test room in the north.")
    14     south = Room('South', "Test room in the south.")
    15 
    16     center.add_paths({'north':north, 'south':south})
    17     assert_equal(center.go('north'), north)
    18     assert_equal(center.go('south'), south)

      还可以根据模块的功能增加更多的测试用例(上面以test开头的函数,称为test case),用assert_equal断言来判断实际输出值和理想输出值是否一致。

      三、测试指南

      1. 测试文件要放在tests/目录下,并且命名为name_tests.py,否则nosetests就无法识别。这样也可以防止测试代码和别的代码相互混淆。

      2. 为创建的每一个模块写一个测试文件。

      3. 测试用例保持简短。

      4. 保持测试用例的整洁,用辅助函数代替重复代码。

      四、其他建议

      了解doc tests,这是一种另外的测试方式。(nose项目似乎已经不再更新?)

  • 相关阅读:
    希望走过的路成为未来的基石
    第三次个人作业--用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次个人编程作业(更新至2020.02.07)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    spring cloud springboot 框架源码 activiti工作流 前后分离 集成代码生成器
    java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
  • 原文地址:https://www.cnblogs.com/cry-star/p/10902735.html
Copyright © 2011-2022 走看看