接口测试-使用枚举类型

来源:互联网 发布:qq2012透明皮肤软件 编辑:程序博客网 时间:2024/05/20 17:28

好久没写了,刚开始有点忙,后来有点懒了,果然什么事还是要勤快点。之前看论坛的时候有一篇帖子(最后有链接)建议把接口response['code']和response['msg']定义成枚举类型,这样以后服务端发生变更时只要更改一个枚举类就可以了。刚开始写接口case的时候没当回事,就是assertEqual(response['code'],a),a表示要断言的一般都是整型数据。结果给自己挖坑了,服务端把返回code变更了,我就很蛋疼的把脚本对应case一个个去改,后来想起了这个事也是自己弄了一下,不管怎么样也算是跑通了,拿出来分享一下。

先上代码:


我的想法是把code,msg分别定义成两个字典类型变量,response_code之所以这种格式是因为如果将来发生变化,我只要把value改一下这样脚本就不需要修改了。同理response_msg也是一样不过,因为code是整型的的所以当做key,如果一个code=1对应多个msg就用列表,方便断言的时候assertIn。

首先继承Enum类,@unicode装饰器,保证不会有重复的变量。

定义完枚举类型后下一步就是取值的问题了


打印结果如下:



采用的是类名称调变量的形式,举个例行:

class weekday(enum):

week={

"1":week1,

"2":week2

  }

day=1

weekday.week可以取到变量week本身,如果获取变量的值需要使用.value()这个方法比如说:weekday.day.value()打印的结果就是1.但是这里面有一个坑就是在一个.py文件可以采用类名.变量名称.value()这种方法获取,但是别的文件引用的时候再用这种方法就是调用不同,


一直没有提示没有这个方法,当时找了好几天的原因,也问了rd,一方面不是python写的也不是很清楚,另一方面很少用到枚举类型。当时我还在ResponseCode类里面写了一个get方法如下图:


但是仍然不好使,搞得我都蛋疼,后来终于知道需要把枚举类型的变量赋给里一个变量之后才能使用.value()方法获取值,如下:

self.responseCode=ResponseCodeMessage.response_code

因为基本上每一个testcase都会验证code值,所以放到base_testcase中的setup()方法,用于其他测试类继承base_testcase类

大体上就这些,使用枚举类型的好处就是可以应对code值的变更,比如说之前code=0代表返回正常,现在修改成code=4000表示正常,如果都是写死在testcase中比如说这样写:

self.assertEqual(0,result['code']),这样的话,如果变更,每一条case都需要手动去修改,要你命啊,但是如果在枚举类型只要把值变一下就行了。

框架修改思路来源如下地址:

https://testerhome.com/topics/5878





   }

原创粉丝点击