1 json和python中字典的区别?
字典是一种数据类型,而json不是,json是一种数据交换格式,但他又类似与字典,都是key/values储存,所以json和字典可以相互转化,json.lodes() 、json.domps()
2 你做接口自动化测试时,测试数据放哪里?
1.将测试用例中用到的固定测试数据放在excel文档中
2.将测试用例中不固定的测试数据,例如手机号码,使用redome函数自动生成
3.数据库的一些配置和接口的通用地址放在ini配置文件中
3 什么是数据驱动?
将测试数据统一存放在Exele中,封装一个读取excle的类,将读取到的数据使用ddt装饰器,运用到测试用例上。将数据维护到excle中方便维护,与代码实现了解耦。
4 excel中如何设计你的用例?
将所有接口数据全部维护到一个文档中,一个接口一个sheet。一般字段包含:序号,标题,请求地址,请求方式,请求参数,预期结果,提取数据,数据库查询语句5excel中的数据怎么拿出来?使用openpyxl第三方库,先读取首行标题用作字典的key值,在读取后面的每行用作vlaue值,将每一条用例以字典的形式存放,再以列表的形式存放同一接口下的所有用例。
6 如果有些接口做了鉴权(需要鉴定权限),怎么实现这些接口的自动化测试?
首先确定鉴权方式,找开发了解一下系统的鉴权方式,按照将上一个接口的响应数据提取用来发送下一个接口使用的参数的思想。在exelc文档中写入登录接口写入token或session的jsonpath表达式,发送登录接口请求,从响应头或响应结果中利用jsonpath表达式提取到token或者session值,将token或者session值使用setattr()方法存放在一个零时类中。,发送另一个请求时,从零时类中使用getattr()方法获取到值,将值添加到请求的头部。
7 什么是会话?
session是一种缓存技术,用户登录系统,一般就把信息保存到session中,然后把sessionid返回,因此大部分系统都会用到session机制来实现鉴权。Session保存数据方式也是以key-value的形式。
8 什么是token?
token就是用户登录后,服务器返回的一段文本,生成的算法需要找开发了解,一半时唯一的,每次服务器返回的数据都不是唯一的。Token也可以用来鉴权是因为用户登录后,服务器生成token信息,用户拿着用户的编号做了一个映射,将映射储存早redis当中,然后再返回这个token给客户端。客户端再次需要鉴权的时候,只需要将缓存的token带去验证,服务器判断此用户id时候已经授权过了。
9 某个接口请求,参数依赖上个接口的返回数据,怎么处理(接口关联)?
在exelc文档中写入登录接口写jsonpath表达式,发送登录接口请求,从响应头或响应结果中利用jsonpath表达式提取到值,使用setattr()方法存放在一个零时类中。发送另一个请求时,从零时类中使用getattr()方法获取到值,将值添加到请求数据中。
10 接口测试的垃圾数据如何清理?
自己使用以及的测试环境个测试库,用完后自己写sql清理就可以了,如果说有像对应的删除接口,也可以调用接口删除
如果是搭建好的测试环境,需要专门的测试人员去清理数据,如果说有像对应的删除接口,也可以调用接口删除,当然如果有权限并且允许删除的清康下,也可以写sql删除的,一般数据库不会给留删除权限。
11 做接口自动化时怎么做的数据验证?
结果对比:获取excle的预期结果与实际接口请求的数据做对比,使用asser
数据库对比:一般对数据库有座更改的情况下需要进行sql验证"
12 如何提升测试套件的执行效率?
1.减少excel读写,减少不必要的io操作
2.excel数据读取测试数据,全部存储到静态变量中。
13 你用过单元测试框架吗,是什么框架,有哪些常用操作?
pytest
fixtrue()、parametrize() 、asser、python.main(""-s"",""-v"")、aller
unittest
derndown、setup、allernotequest、ddt
14 说说你对接口的理解?
接口是服务,是功能点实现,是数据传递的通道,也是服务器端的一个实现了某种协议(比如http协议..)和映射机制(当访问一个url时就会通过服务器端的映射处理机制解析后,落到对应的处理函数)的函数,接口参数就是函数的参数,接口的响应数据就是函数的返回值
15 请简单说一说get、post这两种请求方法的区别?
get
1.一般用来获取数据
2.容量小,200k
3.链接中是以key=value的形式拼接
4.不安全,数据都可以看见
post
1.一般用来发送请求
2.容量大
3.一般将数据放在请求体上
3.安全
16 在浏览器中输入URL,回车之后发生了什么?
输入url后,浏览器会解析,查询是否有缓存,没有就建立TCP链接,将解析的数据发送给服务器,服务器返回数据,并且添加缓存,前端渲染html页面。
17 接口测试的框架搭建?
使用的是分层设计的思想:
1.公共使用层 -
handleconfig:configparser读取配置文件confparser文件read 方法
mylogger:logger日志输出:重新配置日志级别:默认funaction改为level
handledata:临时数据储存,创建一个默认的类EnvData,清理类中的临时数据
handlerequest:请求分装,1.确认鉴权方式 2.请求头信息 3. 请求体格式
handlemydb:pymysql
handlepath:
handleexcle:openpyxl
2.配置层 - .ini:日志配置信息、数据库信息、请求地址、登录信息
3.输出层 - 日志、报告
4.用例层 - 编写用例
5.数据层 - 存放数据信息
6.main.py文件 - 运行文件:BeautifulReport测试报告 unittest.testloder().discover"
18 正则表达式
re.findall()返回所有匹配到的数据
1. .匹配所有 除了/n
2. *匹配0次或者多次
3. ?非贪婪模式
4. +一次或者多次
5. I或,左表达式或右表达式
19 json数据提取 jsonpath.jsonpath()
&根目录
..深层扫描
*通配符
.子节点"