面试题(一)
1. 如何用列表切片的方式取出列表a = [1,2,3,4,5]中的3?
a[2:3]
2. 说说列表是如何排序的?
列表排序:
永久性排序:升序 sort 降序 sort(reverse=True)
#永久性排序—升序 >>> a = [1, 5, 2, 8, 6] >>> a.sort() >>> a [1, 2, 5, 6, 8] #永久性排序—降序 >>> a = [1, 5, 2, 8, 6] >>> a.sort(reverse=True) >>> a [8, 6, 5, 2, 1]
临时性排序:升序 sorted 降序 sorted(reverse=True)
#临时性排序—升序 >>> a = [1, 5, 2, 8, 6] >>> sorted(a) [1, 2, 5, 6, 8] >>> a [1, 5, 2, 8, 6] #临时性排序—降序 >>> a = [1, 5, 2, 8, 6] >>> sorted(a, reverse=True) [8, 6, 5, 2, 1] >>> a [1, 5, 2, 8, 6]
列表反转:
永久性反转列表:reverse()
临时性反转列表:[::-1]
#永久性反转列表 >>> a = [1, 5, 2, 8, 6] >>> a.reverse() >>> a [6, 8, 2, 5, 1] #临时性反转列表 >>> a = [1, 5, 2, 8, 6] >>> a[::-1] [6, 8, 2, 5, 1] >>> a [1, 5, 2, 8, 6]
3. 如何用正则表达式匹配ip地址?
(([01]?\d?\d|2[0-4]\d|25[0-5]\d)\.){3}([01]?\d?\d|2[0-4]\d|25[0-5]\d)
4. Linux下怎么杀掉tomcat进程?
ps -ef | grep tomcat #查出tomcat进程号
kill -9 进程号
5. 怎么处理安卓5.0以下的toast弹框?
跟测试经理沟通后,可以不考虑安卓5.0以下的系统,只考虑兼容比较新的主流的系统
6. 你们是怎么利用jenkins做持续集成的?
一般为了分担jenkins服务器的压力,会搭建jenkins的Master和Slave机,Master是jenkins服务器,Slave是本地的执行机
如何在Master上配置Slave?新建节点,设置节点(包含名字、并发构建数、远程工作目录、标签、语法和启动方式等(通过java web启动代理))
启动slave,点击lauch,会下载一个agent.jnlp文件,下载之后双击agent.jnlp,会弹出一个窗口,如果窗口显示Connected,表示slave已启动,再次刷新
在Master机上创建一个任务,输入任务的名字,构建一个自由风格的项目软件,在General中指定执行机—限制项目的运行节点,这里可以填Label的名字,也可以填执行机的名字,在构建中选择执行Windows批处理命令—切换到项目所在目录,用python运行main.py,保存,点击立即构建,这时会在远程工作目录下生成工作空间
这时候,可以从SVN上download项目代码到工作目录,进入构建后操作,选择Publish JUnit test result report,在构建后操作中填上存放xml报告的路径,在构建中修改批处理命令(用WORKSPACE的环境变量代替),保存后,立即构建
此外,还可以构建触发器,进行定时构建,每隔多长时间运行一次脚本,还可以配置邮件服务器,将测试报告发送到邮箱
7. 说出你们工作中常用的linux命令?
像ls, pwd, cd, chmod, chown, chgroup, tar, find, grep, wc, cat, mkdir, rm, rmdir, rz, sz, ifconfig等等
8. 接口自动化中的关联怎么处理?
在接口自动化中,后面一个接口的请求数据需要用到前面接口的响应数据的一部分,那么可以在存储数据的excel表中添加一列提取表达式,在这一列,如果有值表示需要提取,先提取赋值再断言,如果没值,直接断言
将后面接口的请求数据用占位符表示,前面需要提取的接口在提取表达式那一列用占位符=提取表达式表示,用openpyxl读取所有的测试数据并保存在一个列表中,在测试用例类中,ddt.data可以分解一组数据为多条测试数据,在发送请求得到响应后,判断每一条测试数据中是否包含了提取表达式,如果有,则用字符串的分割方法来以=作为分割,将字符串分割为["占位符","提取表达式"]的形式,然后定义一个全局变量global_var={},将列表中第一个元素"占位符"作为键,将提取表达式提取到的响应结果的字段作为值,存储在global_var字典中
在发送请求前,判断global_var长度是否大于0,并且请求数据是否为空,如果长度大于0且请求数据不为空,则用for循环遍历字典,如果请求数据中能用find方法找到字典中的键,则用请求数据的replace方法将字典中的键替换为字典中的值,这样就完成了接口关联处理
9. 你们日常的工作和测试计划一致吗?
大体一致,但有的时候有所调整