轮评审用例,写用例的重要性-----(python单元测试反思)
时间过的真快,3月底了,更新一次博客吧,算是对三月份忙碌的一个总结。
吃过饭,习惯登录qq,看到我群里的一个大神,碎冰发的一个作业
不就是写个代码吗,然后写完再进行测试这个代码是否实现了这个功能。
于是乎写了一段代码
def str_to_int(string):
if not string: # 空字符返回异常
return False
ret = 0 # 结果
for k, s in enumerate(string):
if s.isdigit(): # 数字直接运算
val = ord(s) - ord('')
ret = ret * 10 + val
else:
return False
return ret
写完后开始用组织测试用例,利用ddt的数据驱动去测试
from sas import str_to_int
import ddt,unittest
data=[{'write':'','result':1},{'write':'a','result':False},{'write':'','result':True},
{'write': ' ', 'result': False},{'write':'1 ','result':True},{'write':'1a','result':False},
{'write': '1ddddddddddddddddddddddddddd111', 'result': False},{'write':'1*dd','result':False},
{'write': '1*123', 'result': False},{'write':'.1','result':False},
{'write':'1/7','result':False},{'write':'','result':122222222},{'write': '1/a*1', 'result': False},
{'write':',,,,,','result':False},{'write':'+++++,,,','result':False},{'write':'beijing','result':False},]
@ddt.ddt
class Teststrint(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
@ddt.data(*data)
def teststrint(self,data):
result=str_to_int(data['write'])
self.assertEqual(result,data['result'])
if __name__=='__main__':
unittest.main()
运行完毕后:
我想着这样就算结束了,发到群里,可是我这用例很多情况都没有考虑完,在当时我编写代码的时候,我想着我的用例都已经覆盖了我所有想到的结果,。
可是当我到发出来后,发现了很多情况没有考虑到,代码很多的地方需要优化。
放到公司里的流程里,用例不怎么写 不怎么维护,这是很正常的现象,我们真的不写用例就能测试好,用例写好不评审就能完成,写好的用例真的能够一直不变不需要维护吗,其实这个答案是肯定的,这是不行的。
用例我们一般会有负责这个功能的测试工程师去编写,然后编写完成后去测试,有的没有评审,测试组内的评审都没有,这是不对的。
每个人在写测试用例的时候都会有自己的局限性,都会有自己考虑不到的地方,当我们写完自己负责的测试用例,我们一定要进行用例的评审,那怕是我们组内评审,也会受到很多改进的意见,
测试用例写好不是一层不变的,需要定期维护更新的,功能上有变动就会进行更新维护升级。
不写用例在测试中更是不可取的。 现有的经验不一定保证测试没有问题,测试用例也不一定能覆盖所有的情况,只能尽可能的让测试用例覆盖更多的情景。
身为测试工程师,写用例,评审用例,用例更新,测试,定期维护测试用例。这些都是必要的。
测试工程师不能简简单单的只停留在个人的空间,应该走出去,打开自己的圈子。开打自己的思路。
个人公众号
轮评审用例,写用例的重要性-----(python单元测试反思)的更多相关文章
- iOS使用宏写单例
本文只介绍ARC情况下的单例 过去一直背不下来单例如何写,就是知道这么回事,也知道通过宏来写单例,但是一直记不住,今天就来记录一下 - (void)viewDidLoad { [super v ...
- 【Swfit】Swift与OC两种语法写单例的区别
Swift与OC两种语法写单例的区别 例如写一个NetworkTools的单例 (1)OC写单例 + (instancetype)sharedNetworkTools { static id inst ...
- Python Api接口自动化测试框架 代码写用例
公司新来两个妹子一直吐槽这个接口测试用例用excel维护起来十分费脑费事,而且比较low(内心十分赞同但是不能推翻自己),妹子说excel本来就很麻烦的工具,于是偷偷的进行了二次改版. 变更内容如下: ...
- Spring对象类型——单例和多例
由于看淘淘商城的项目,涉及到了项目中处理spring中bean对象的两种类型,分别是单例和多例,就在此记录一下,方便加深理解,写出更加健壮的代码. 一.单例和多例的概述 在Spring中,bean可以 ...
- Katalon系列十八:用例变量&用例间调用
一.用例变量写用例时,我们可以用代码定义变量,如:String name = '新闻'println(name) 上面是硬编码,我们也可以在用例里定义变量,只在该用例里生效哦,想跨用例就用全局变量. ...
- Java单例和多例
背景:最近在学习韩老师的笔记时候发现不是很了解单例和多例,于是通过网上查找资料的方式去学习. 设计模式:最佳的实践,是软件开发人员在软件开发过程中面临一般解决方案,也就是开发的经验总结. 单例模式(S ...
- Spring 的Controller 是单例or多例
Spring 的Controller 是单例or多例 你什么也不肯放弃,又得到了什么? 背景:今天写代码遇到一个Controller 中的线程安全问题,那么Spring 的Controller 是单例 ...
- Python单元测试框架unittest之批量用例管理(discover)
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了.加载用例后,用unittest里面的TextT ...
- Servlet到底是单例还是多例你了解吗?
为一个Java Web开发者,你一定了解和学习过Servlet.或许还曾在面试中被问到过Servelt是单例还是多例这个问题. 遇到这个问题,你是否曾深入了解过,还是百度或者Google了一下,得到答 ...
随机推荐
- 1_类的定义(Defining Class)
C++ 提供了一种类class机制,让程序员可以定义真正意义上的数据类型.即不但可以定义数据的复合,还可以定义该复合数据的操作,以便让本应由使用该数据类型的程序员做得工作分出来,让定义类型的程序员去做 ...
- dojo省份地市级联之省份封装类(一)
省份封装类 Province.java /** * 省份封装类 */ package com.you.model; import java.io.Serializable; /** * @author ...
- 【javascript】jquery jsonp跨越请求
<html> <head> <meta charset="utf-8"> <title></title> <scr ...
- ioctl,unlocked_ioctl 处理方法
kernel 2.6.35 及之前的版本中struct file_operations 一共有3个ioctl : ioctl,unlocked_ioctl和compat_ioctl 现在只有unloc ...
- stm32开发之使用Keil MDK以及标准外设库创建STM32工程
‑6 MDK详细版本信息 ‑8保存路径的选择 ‑9选择芯片型号 ‑10拷贝启动代码选择 ‑11选择 Manage Comoonents ‑12编辑组并添加对应文件 ‑13工程管理文件列表 ‑14选择进 ...
- WebService之CXF注解之三(Service接口实现类)
ITeacherServiceImpl.java: /** * @Title:ITeacherServiceImpl.java * @Package:com.you.service.impl * @D ...
- 挖一挖不常用到而又很实用的重载-Split
Split这个基本上所有的程序开发人员都用到,一般使用单字符和长字符串拆分字符串的较多,其实还有一个重载非常好用,那就是多种组合字符来进行拆分. 例如: "aaaaaaaaaa{@}bbbb ...
- java.sql.SQLException:Invalid value for getInt()-'zhangsan'
1.错误描述 java.sql.SQLException:Invalid value for getInt()-'zhangsan' 2.错误原因 在遍历打印查询结果时,rs.getInt(3),而在 ...
- C#的动态链接库和XML配置
今天对昨天的实例进行了改进和提高,将堆排序和冒泡排序封装在一个动态链接库中,提供函数调用和事件委托.此外加入XML进行配置,在XML中存入相关配置信息,提供一个单独的XmlClass对其进行操作,加深 ...
- 【BZOJ1087】【SCOI2005】互不侵犯(状态压缩,动态规划)
题面 这种傻逼题懒得粘贴了... 题解 傻逼题 \(f[i][j][k]\)表示当前第\(i\)列,当前放置状态为\(j\),已经放了\(k\)个 暴力判断状态合法性,暴力判断转移合法性,然后统计答案 ...