Python接口测试题(持续更新中)
Posted 软件测试技术分享总结
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python接口测试题(持续更新中)相关的知识,希望对你有一定的参考价值。
1、json和字典的区别?
Json是轻量级的数据交互格式,以key-value的键值对形式来保存数据,结构清晰,可以说是目前互联网项目开发中最常用的一种数据交互格式。
字典,同样是以key-value的键值对来保存数据,是python中的一种数据类型。
2、你做接口自动化测试时,测试数据放哪里?
1) 对于一些基础配置比如数据库配置可以放到properties文件(yaml文件,没用过就别拓展了)
2) 接口测试需要用到的数据可以放数据库表,也可以放到excel中。
3、什么是数据驱动?
数据驱动就是通过excel,或者xml,数据库等数据结构来维护测试数据,通过相应的技术去处理,拿到测试数据用于测试,从而实现测试数据与代码的解耦,数据驱动测试的本质是高级的参数化。
4、excel中如何设计你的用例?
1) 所有的接口信息维护在一个表单
2) 关于接口的用例数据维护在一个表单
3) 接口传参一列来传,通过构造json格式的字符串即可解决传多个参数的问题,同时提升了用例的可维护性
5、excel中的数据怎么拿出来?
通过第三方库openpyxl来完成,项目只需要引入openpyxl库,通过它提供的api即可完成对于excel的操作,甚至于我们自己也可以做一些二次封装,使得操作更方便。一行数据就是一个用例。
6、如果有些接口做了鉴权(需要鉴定权限),怎么实现这些接口的自动化测试?
首先需要明确接口是通过什么机制来实现的鉴权
如果是通过会话id(123456)来实现鉴权的,那么先调用完登录接口,拿到它返回的这个数据,存储起来,后面再调用其他接口的时候直接带上这个数据过去就可以了。
如果是通过token来实现鉴权的,那么同样只需要在调用完登录接口,拿到它返回的这个数据,存储起来,后面再调用其他接口的时候直接带上这个数据过去就可以了。
7、什么是会话?
所谓会话就是session,而session是一种服务器的缓存技术,由服务器端创建,用户登录了系统,一般就会把登录用户的信息保存到这个session对象中,然后把此会话对应的id(JSESSIONID)返回,因此大部分系统都会用到session机制来实现鉴权。Session保存数据方式也是以key-value的形式。
8、什么是token?
所谓token其实就是服务器端返回的一个字符串(有点类似于:xys73494954sdhcdr83435这么一串),这个数据是基于什么算法生成的需要找开发确认,一般这个数据是唯一的,服务器每次返回的token都会不一样。Token之所以可以用来做鉴权,原理如下:
用户a调用了登录接口--》登录了系统b--》服务器端生成了一个唯一的token信息(假设为c),然后会拿用户的编号id(假设为d)做了一个映射:c-d,然后将这样的映射关系存到数据库或redis等缓存中,然后再返回这个token给客户端--》客户端再调用其他需要鉴权的接口时,只需要将缓存起来的这个token带过去验证--》服务器根据此token检查是否有登录用户信息来判断此请求是否是一个已登录授权的用户。(这里客户端怎么取到这个token,怎么存,再次请求时怎么带过去,上面接口鉴权部分已解释)。
某个接口请求,参数依赖上个接口的返回数据,怎么处理(接口关联)?
场景:b接口在调用的时候参数依赖于a接口的返回数据。
处理方案:
a接口调用完--》从响应中取出b依赖的这个参数--》保存起来--》b调用的时候,取出这个信息--》当做参数传过去即可。
保存方案:
参考问题5中的数据保存方式
9、接口调用依赖第三方的接口b,而b接口还未提供给你,如何处理?
通过mock框架搭建自己的mock系统/平台(其实就是自己开发接口),模拟这个第三方接口mock一个出来即可,这样就解决了这个依赖。
10、接口测试的垃圾数据如何清理?
可以自己准备单独的环境(独立的数据库),这样接口调用产生的数据可以在整个套件执行完后(@AfterSuite)通过执行sql脚本来完成数据删除。
11、你做接口自动化,项目用的是什么数据库,用什么来操作的这个数据库?
Mysql,可以通过jdbc来实现数据库的增删查改等操作。
以上是关于Python接口测试题(持续更新中)的主要内容,如果未能解决你的问题,请参考以下文章
体悟与总结之虫师作品《Web接口开发与自动化测试...Python..》问题处理(持续更新。。。)
Python接口测试实战5(上) - Git及Jenkins持续集成