Python自学周记(五)

Python自学周记(五)

本周在电脑上安装了项目骨架,开始学习自动化测试以及自己编写测试程序。
所谓的自动化测试,就是编写一段测试代码代替你去检验你所设计的产品,就拿上周学习的游戏代码来说,如果要人为的测试,需要把所有指令都输入一遍,第一个场景还好,第三个输入密码的场景,每失败一次就要从头再来,那个过程别提多枯燥了(别问我是怎么知道的)。所以自动化测试是非常必要的,假如哪一天对这个游戏进行了修改,只需要运行测试代码就可以了。

了解了自动化测试,便马上自己动手写一段测试程序。
先测试一小部分,测试用例如下:

from nose.tools import *
from ex48 import lexicon

def test_directions():
    assert_equal(lexicon.scan("north"),[('direction','north')])
    result = lexicon.scan("north south east")
    assert_equal(result,[('direction','north'),
                         ('direction','south'),
                         ('direction','east')])

我要编写的是一个扫描器,扫描的结果是[(‘direction’,‘XXX’)]形式的列表。看到列表,首先想到了要用 for 循环把元素依次放入列表中。书中提示到需要应用“try—except”组合,把要运行的代码放在“try”中,把出错后的执行的命令放在“except”中,通过这种方法排除异常,捕获错误。下图为我第一次尝试编写的代码:

directions = ('north','south','east')     #需要扫描的元组

class lexicon(object):

    def scan(self,stuff):

        self.stuff = stuff
        words = stuff.split(' ')  #以空格为标记将字符串分开
        list = []

        for i in words :
            try:
                list.append(('direction',i))
            except:
                return None

第一个代码可谓错误百出:
(1)module ‘ex48.lexicon’ has no attribute ‘scan’
因为 lexicon_tests.py文件调用时用的是 ex48 而不是 ex48.lexicon ,所以不能用类书写,要想用类书写,需将测试程序的 from ex48 import lexicon 改为 from ex48.lexicon import lexicon
(2)scan() missing 1 required positional argument: ‘stuff’
意思是:scan()缺少1个必需的位置参数:“stuff” 。这里不需要加 self ,直接引用 stuff 即可。因为测试程序中 scan 函数的作用就是这里 stuff 的作用,加了 self 反而多此一举。
(3)None != [(‘direction’, ‘north’)]
指没有收到[(‘direction’, ‘north’)]列表,我们忘记设置返回值,加上即可。要注意的是 return 要在 for 循环里,不然会报错。
改正后的代码为:

directions = ('north','south','east') #需要扫描的元组

class lexicon(object):

    def scan(stuff):
 
        words = stuff.split(' ')  #以空格为标记将字符串分开
        list = []
 
        for i in words :
           try:
               list.append(('direction',i))
           except:
               return None
        return list

测试结果:
在这里插入图片描述
习题里需要测试类似这样的六段代码,只需要在 for 循环中加入 if
语句判断即可。
例如:

        if i in directions:
            list.append(('direction',i))
        elif i in verbs:
            list.append(('verb',i))
       ……

最终的测试结果为:
在这里插入图片描述

目前只是初步了解了自动化测试,还需要大量的练习才能熟练掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值