接口自动化面试题
自动化测试之接口面试题
题目汇集:
- json和字典的区别? -对基础数据类型的考察
- 测试的数据你放在哪? -数据与脚本分离
- 参数化 - 数据驱动模式
- 下个接口请求参数依赖上个接口的返回数据 - 参数关联
- 依赖于登录的接口如何处理 -token和session的管理
- 依赖第三方的接口如何处理 -mock模拟数据返回
- 不可逆的操作,如何处理,比如删除一个订单这种接口如何测试 -造数据
- 接口产生的垃圾数据如何清理 - 数据清理
- 一个订单的几种状态如何全部测到,如:未处理,处理中,处理失败,处理成功 - 造数据,改数据库订单状态
- python如何连接数据库操作?-数据库的连接操作
- 其它的就是运行出报告、代码管理(git)、运行策略和持续集成jenkins相关了
题目解答:
- json和字典的区别?
json() 本质是字符串 str类型,是一种按照key:value键值对格式的字符串
字典:是python语言中的一种数据类型(int str,float,bool,dict,tuple,list) - 测试的数据你放在哪?
1对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)
2对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成
3.对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以
4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理
5.对于邮箱配置的一些参数,可以用ini配置文件
6.对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据
7.对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的
总之不同的测试数据,可以用不同的文件管理 - 什么是数据驱动,如何做参数化?
使用装饰器,ddt,data,unpack ddt装饰测试类,data装饰测试方法,unpack 拆包,将需要修改的数据进行参数化,方便后期数据的操作
参数化的思想是代码用例写好了后,不需要改代码,只需维护测试数据就可以了,并且根据不同的测试数据生成多个用例 - 下个接口请求参数依赖上个接口的返回数据?
1.不同的接口封装成不同的函数或方法,需要的数据return出来,用一中间变量a去接受,后面的接口传a就可以了
2.使用反射机制,将上一个接口返回的数据 作为一个入参 传到下一个接口中。setattr,将返回的数据存到一个变量中 - 依赖于登录的接口如何处理?
1.登录接口依赖token的,可以先登录后,token存到一个yaml或者json,或者ini的配置文件里面,后面所有的请求去拿这个数据就可以全局使用了
2.如果是cookies的参数,可以用session自动关联 s=requires.session() 然后根据get/post方法,进行调用(s.get())自动关联session - 依赖第三方的接口如何处理?
使用mock机制,去搭建一个mock服务,模拟接口返回数据 - 不可逆的操作,如何处理,比如删除一个订单这种接口如何测试?
考查造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的。
比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。
平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作
测试用例前置操作,setUp做数据准备
后置操作,tearDown做数据清理 - 接口产生的垃圾数据如何清理?
造数据和数据清理,需用python连数据库了,做增删改查的操作
测试用例前置操作,setUp做数据准备
后置操作,tearDown做数据清理 - 一个订单的几种状态如何全部测到,如:未处理,处理中,处理失败,处理成功
创造数据,修改数据的类型 - python如何连接数据库操作?
import pymysql(根据公司的数据库的类型进行连接) db=pymysql.connect(user=’’,password=’’,host=’’,db_name=’’,port=’’)
使用cursor()方法获取操作游标 cursor=db.cursor() SQL 查询语句:sql=’’ 执行SQL语句:cursor.execute(sql) 获取结果:result=cursor.fetchone()
cursor.close() db.close()
1.新建连接,数据库的连接信息
2.新建查询界面
3.编写SQL语句
4.执行SQL语句
5.查看结果
6.关闭查询
7.关闭数据库的连接 - git 将代码上传到github上 git add –all git commit ‘注释’ git push
git 将github上的代码拉下来 git clone ‘github的项目地址’
jenkin持续集成,发生邮件等
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 筱茗辰!