免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1724 | 回复: 0
打印 上一主题 下一主题

Python中的单元测试,步步惊心续集之怎样狸猫换太子? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-23 13:48 |只看该作者 |倒序浏览
本帖最后由 Sasoritattoo 于 2013-11-23 13:54 编辑

标题有点儿噱头,问题说白了就是下面的场景该怎么实现单元测试?
  1. #人物类——若曦
  2. class RuoXi:
  3.     '''若曦生了一个太子'''
  4.     def __init__(self):
  5.         pass
  6.     def tai_zi(self):
  7.         print "太子"
  8.         return "太子"
复制代码
  1. #场景类——皇宫
  2. class HuangGong
  3.     '''皇宫里的生活经常会上演步步惊心的大戏'''
  4.     def __init__(self):
  5.         pass
  6.     def bu_bu_jing_xin(self):   #步步惊心
  7.         print "《步步惊心》Action"
  8.         xixi = RuoXi()
  9.         child = xixi.tai_zi()
  10.         ...
复制代码
现在我们要对bu_bu_jing_xin()这场戏单元测试一下?但是实际上我们的太子还没生出来呢?肿么办?那么我们必须要Mock一个狸猫的东西来代替太子。
可惜我们没法进入皇宫呢?这又肿么办?
  1. #单元测试类
  2. class HuangGongTest(MockTestCase):
  3.     def setUp(self):
  4.         print '各演员就位...'
  5.         print '各导演就位...'
  6.         print 'Action...'
  7.         pass

  8.     def tearDown(self):
  9.         pass

  10.     def test_bu_bu_jing_xin(self):
  11.         pass #靠,演员,导演都齐了,这缺了太子啥事也干不成啊,这样耗下去损失可够大的呀....
复制代码
请看官们看看这tai_zi()的问题怎么解决?

以上文字表述仅仅是想激发大家兴趣,让大家能够更容易思考,在求知的道路上也希望能给大家增加一点儿乐趣;如果不喜,可以看下面更严谨的说法:
我们要对HuangGong类中的bu_bu_jing_xin()这个方法进行单元测试,但是RuoXi对象是在此函数中生成的,而RuoXi中的tai_zi()这个函数是一种妨碍测试的资源,比如,网络请求之类的,数据库的内容之类,但是这样怎么测试呢?


谨慎放水!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP