接⼝⾃动化常见的⾯试题及答题思路分享
1.Python常见的数据类型有哪些?
int、str、 float、list、bool、tuple、dict、set
json本质上还是字符串,只是按key:value这种键值对的格式来的字符串
2. 下个接⼝请求参数依赖上个接⼝的返回数据
不同的接⼝封装成不同的函数或⽅法,需要的数据return出来,⽤⼀个中间变量a去接受,后⾯的接⼝传a就可以了
3.什么是数据驱动,如何参数化?
python怎么安装selenium库1、接⼝⾃动化当中,使⽤ddt模块实现数据驱动。
2、流程:
1)⽤excel⽂件来管理测试⽤例涉及的数据,包括请求地址,请求⽅法,请求body,前置条件-sql语句,期望结果,⽐对⽅式,数据库校验语句。
2)⽤python封装excel类,根据接⼝名读取接⼝对应的测试⽤例数据所有⾏,存储在列表当中。
3) ⽤unitest框架来编写接⼝的测试⽤例,通过在⽤例前⾯@ddt.data(*测试数据列表变量名)来执⾏每⼀组⽤例。
4.测试的数据你⼀般放在哪?
对于这个问题最好是具体情况具体分析,针对不同的数据应该放在不同的位置
1.对于账号密码,这种管全局的参数,可以⽤命令⾏参数,单独抽出来,写的配置⽂件⾥(如ini)
2.对于⼀些⼀次性消耗的数据,⽐如注册,每次注册不⼀样的数,可以⽤随机函数⽣成
3.对于⼀个接⼝有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以
4.对于可以反复使⽤的数据,⽐如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,⽤完后再清理
5.对于邮箱配置的⼀些参数,可以⽤ini配置⽂件
6.对于全部是独⽴的接⼝项⽬,可以⽤数据驱动⽅式,⽤excel/csv管理测试的接⼝数据
7.对于少量的静态数据,⽐如⼀个接⼝的测试数据,也就2-3组,可以写到py脚本的开头,⼗年⼋年都不会变更的,对于少量的,固定不变的数据其实是可以放的
5. 依赖于登录的接⼝如何处理grunt沈哲扮演者
登录接⼝依赖token的,可以先登录后,token存到⼀个yaml或者json,或者ini的配置⽂件⾥⾯,后⾯所有的请求去拿这个数据就可以全局使⽤了。(YAML 是专门⽤来写配置⽂件的语⾔,⽐Jason格式⽅便)
如果是cookies的参数,可以⽤session⾃动关联
s=requests.session()
后⾯请求⽤s.get()和s.post()就可以⾃动关联cookies了
6. 依赖第三⽅的接⼝如何处理
这个需要⾃⼰去搭建⼀个mock服务,模拟接⼝返回数据,问你具体如何搭建 ,如何模拟返回的数据,是⽤的什么格式,如何请求的?
7.不可逆的操作,如何处理,⽐如删除⼀个订单这种接⼝如何测试
⽐如⼯作流这种,流向不同的⼈状态不⼀样,操作权限不⼀样,测试的时候,每种状态都要测到,就需要⾃⼰会造数据了。
平常⼿⼯测试造数据,直接在数据库改字段状态。那么⾃动化也是⼀样,造数据可以⽤python连数据库了,做增删改查的操作,删除订单业务上⼀般业务上是做物理删除,即改字段
测试⽤例前置操作,setUp做数据准备
后置操作,tearDown做数据清理
8.接⼝产⽣的垃圾数据如何清理
跟上⾯⼀样,造数据和数据清理,需⽤python连数据库了,做增删改查的操作
测试⽤例前置操作,setUp做数据准备
后置操作,tearDown做数据清理
所以每个接⼝⽤例⽤例跑之前和跑之后都清理下产⽣的数据,保证了账号的可重复使⽤
9.怎么检查接⼝返回的数据是否正确?
1.通过断⾔的⽅式,即对传⼊的参数⾃⼰事先设定好预期返回值,根据返回值做断⾔;
适合中国人的undercut2. 对⽐接⼝返回的数据与我们从数据库中查询到的数据是否相符;可通过将接⼝返回的数据和数据库的查到的数据先转为list,然后进⾏list 对⽐,相等返回true,不相等返回false。
10.⼀个订单的⼏种状态如何全部测到,如:未处理,处理中,处理失败,处理成功
通过连接数据库,⽤游标操作数据库,修改数据的状态
11. python如何连接数据库操作?
主要流程是建⽴数据库的连接,创建游标(cursor),数据清除、数据插⼊、关闭数据库(关闭游标)。见代码
#!/usr/bin/python3
查询EMPLOYEE表中salary(⼯资)字段⼤于1000的所有数据:
import pymysql
打开数据库连接
db = t(“localhost”,“testuser”,“test123”,“TESTDB” )
使⽤cursor()⽅法获取操作游标
cursor = db.cursor()
SQL 查询语句
sql = “SELECT * FROM EMPLOYEE
WHERE INCOME > %s” % (1000)
try:
执⾏SQL语句
获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
数据结构严蔚敏pdfincome = row[4]
# 打印结果
print (“fname=%s,lname=%s,age=%s,sex=%s,income=%s” %
(fname, lname, age, sex, income ))
except:
print (“Error: unable to fetch data”)
mysql面试题sql关闭数据库连接
db.close()
12. ⼀个订单内容:他会携带⽤户信息,订单信息,订单⾦额,订单状态等;你怎么保证这些数据的正确性?
根据⾃⼰接⼝传的参数做断⾔,即⽤固定的⽤户购买固定的商品和固定的数据做测试,再根据返回值做断⾔。
13. 你之前的接⼝⾃动化具体是怎么做的?
主要通过python3,unittest框架,requests库来完成。case⽬录存放所有的测试⽤例,lib⽬录存放⾃⼰封装的⼀些代码,result⽬录存放测试结果和测试⽇志,runner.py是主程序。
1.提取脚本可重复项,封装简化脚本,利⽤公共类或公共函数等⽅法,提⾼脚本的利⽤率、可读性及可维护性
font awesome文档2.提取脚本中可变的参数,修改成变量
3.利⽤csv、Excel、ini、数据库、yaml等参数化数据信息,使业务与数据分离,实现数据驱动测试
4.引⼊⽇志,出现问题能迅速定位(import logging)
5.添加断⾔并⽣成可视化报告(安装HTMLTestRunner–下载后,放⼊lib中调⽤HTMLTestRunner中的⽅法,来⽣成报告)
6.利⽤Jenkins持续集成⼯具,实现⾃动打包,按时发布并执⾏,⽣成结果邮件发送给项⽬相关⼈
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论