1、18.19.son.test1(11)20.2、阅读以下代码,推导最后结果:def add(n, i): return n+idef test(): for i in range(4): yield ig = test()for n in 1, 10, 5:21. g = (add(n, i) for i in g)22.23.24.25.print(list(g) # 结果是 15, 16, 17, 1826.所有的结果都是生成器表达式,不调用它,不从里面取值,就不干活。附上我的推导过程:n = 1g = (add(n,i) for i in test()# print(list(g) #
2、1, 2, 3, 4n = 10g = (add(n,i) for i in (add(n,i) for i in test()# print(list(g) # 20, 21, 22, 23n = 5g = (add(n,i) for i in (add(n,i) for i in (add(n,i) for i in test()g = (add(n,i) for i in (add(n,i) for i in (5,6,7,8)g = (add(n,i) for i in (10,11,12,13)g = (15,16,17,18)print(list(g) # 15, 16, 17,
3、1827.3、快速编写前端 HTML、JavaScript、Vue 代码。HTML、JavaScript 代码:html lang=enhead bodyh1 id=titlexxx公司pxxx公司是一家.div id=myboxh1ascript type=text/javascript src=public/bundle.js/script28.29./body30.31./html32.33.script34.35. var title = document.getElementById();36.37. title.onclick = function() 38.39. alert(我
4、爱xxx公司,祝我面试成功40.41. 42.43.44.Vue 代码编写:import Vue from vue;new Vue( el : #mybox, data : a : 100 , methods : add : function() this.a +;);4、L = 1, 2, 3, 11, 2, 5, 3, 2, 5, 3,用一行代码得出 11, 1, 2, 3, 5。list(set(L)5、L = 1, 2, 3, 4, 5,L10:的结果是?空列表(当时有点紧张,一直在“空列表”和“索引超出范围”两个答案之间徘徊)。6、L = 1, 2, 3, 5, 6,如何得出 123
5、56?注意,个人觉得这个题有坑,列表的元素不是字符串,所以不能.join(L)。以下是过程:s = for i in L: s = s + str(i)print(s) # 12356print(type(s) # class str7、列表和字典有什么区别?一般都是问列表和元组有什么不同。(1)获取元素的方式不同。列表通过索引值获取,字典通过键获取。(2)数据结构和算法不同。字典是hash算法,搜索的速度特别快。(3)占用的内存不同。8、如何结束一个进程?(1)调用terminate方法。(2)使用subProcess模块的Popen方法。使用简单,具体用法,这里不展开。9、进程、线程有什么
6、区别?什么情况下用进程?什么情况下用线程?(1)区别: 地址空间和其它资源(如打开文件):进程之间相互独立,同一进程的各线程之间共享。某进程内的线程在其它进程不可见。 通信:进程间通信 IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信需要进程同步和互斥手段的辅助,以保证数据的一致性。 调度和切换:线程上下文切换比进程上下文切换要快得多。 在多线程操作系统中,进程不是一个可执行的实体。(2)使用场景:同时操作一个对象的时候,比如操作的是一个全局变量,我用线程,因为全局变量是所有线程共享的。10、什么是ORM?为什么要用ORM?不用ORM会带来什么影响?ORM框架可以将类和数据表进行对
7、应,只需要通过类和对象就可以对数据表进行操作。通过类和对象操作对应的数据表,类的静态属性名和数据表的字段名一一对应,不需要写 SQL 语句。ORM另外一个作用,是根据设计的类生成数据库中的表。11、写一段代码,ping 一个 ip地址,并返回成功、失败的信息。使用 subProcess 模块的 Popen 方法(使用简单,具体用法,这里不展开)。12、说说接口测试的流程,介绍一下 request 有哪些内容。(1)流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。(2)request 内容: 封装了各种请求类型,get、post 等; 以关键字参数的方式
8、,封装了各种请求参数,params、data、headers、token 等; 封装了响应内容,status_code、json()、cookies、url 等; session 会话对象,可以跨请求。13、ui自动化,如何做集群?Selenium Grid。14、移动端 UI 自动化,经常会自动安装 2 个程序,你知道那两个程序是什么东西不?守护精灵,和 Python 并发编程中的 daemon 原理一样,父进程/父线程的代码执行完毕,它就终止,要写在 start 方法前面。另外,要找到配置文件,注释掉两行代码。15、说5个以上 Linux 命令。16、介绍一下你在这个项目中是如何使用 Je
9、nkins 的。,说了基本操作,比如定时构建执行代码。17、说说你对敏捷模式的认识。小步快跑,拥抱变化。测试中,可以通过行为驱动测试,有个框架 lettuce 可以用。18、了解过 Docker 不?了解,没用过。然后说了下对 Docker 大概的认识、优势。一、json和字典dict的区别首先python里面的基础数据类型有:int、str、 float、list、bool、tuple、dict、set这几种类型,里面没json这种数据类型。JSON( 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储
10、和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。由于你的代码是python写的(也有可能是php,java,c,ruby等语言),但是后端接口是java写的(也有可能是其它语言),不同的语言数据类型是不一样的(就好比中国的语言和美国的语言数据类型也不一样,中国的一般说一只羊,一头牛,美国都是 a /an这种单位),所以就导致你提交的数据,别的开发语言无法识别,这就需要规范传输的数据(传输的数据都是一个字符串),大家都遵循一个规范,按一个标准的格式去传输,于是就有就json这种国际化规范的数据类型。j
11、son本质上还是字符串,只是按key:value这种键值对的格式来的字符串b = a: 1,b 2,c true二、测试的数据放在哪?1.对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成3.对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理5.对于邮箱配置的一些参数,可以用ini配置文件6.对于全部是独立的接口项目,可以用数据驱
12、动方式,用excel/csv管理测试的接口数据7.对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的三、什么是数据驱动,如何参数化?四、下个接口请求参数依赖上个接口的返回数据这个很容易,不同的接口封装成不同的函数或方法,需要的数据return出来,用一个中间变量a去接受,后面的接口传a就可以了可以参考登录的cookie或token五、依赖于登录的接口如何处理参考requests的方法六、依赖第三方的接口如何处理这个需要自己去搭建一个mock服务,模拟接口返回数据mock服务搭建需要自己能够熟练掌握,面试会问你具体如何搭建 ,如何模拟返回的数据
13、,是用的什么格式,如何请求的七、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作测试用例前置操作,setUp做数据准备后置操作,tearDown做数据清理八.接口产生的垃圾数据如何清理跟上面一样,造数据和数据清理,需用python连数据库了,做增删改查的操作九.一个订单的几种状态如何全部测到,如:
14、未处理,处理中,处理失败,处理成功跟上面一样,也是考察造数据,修改数据的状态十、get和post的区别十一、post请求的四种参数形式是什么application/x-www-form-urlencodedmultipart/form-dataapplication/jsontext/xml十一、公司有用到第三方服务,出了问题,打电话给第三方,第三方不承认,这时候日志又显示不到错误,应该怎么处理1、单独调用第三方服务,查看返回结果;2、引入mock机制,假如正常返回的情况下,测试我们的系统是否存在问题;3、建议开发增加日志,详细记录调用第三方接口的过程,记录调用前接口入参,返参等信息;十二、接
15、口自动化中的关联怎么处理?将请求返回的结果反射到类属性中,使用setattr()函数,下个请求调用这个类十三、自动化测试怎么校验结果?使用断言,预期结果值和实际结果值进行对比;十四、自动化使用的测试框架是什么?简述自动化框架的设计、维护1、自动化使用的测试框架:语言:python测试框架:unittest(assertEqual,assertTure,assertFalse)接口调用:requests(API非常简洁)数据驱动:ddt(装饰器:ddt类,unpack测试方法装饰器解包时候,data测试方法装饰器,可迭代的数据类型)注:普通用户,管理用户,数据库,配置文件-基础数据数据管理:op
16、enpyxl(excel,CSV,json,yaml,txt)数据库交互:pymysql -根据数据库选择相应的第三方模块来完成数据格式的转换:eval,json日志处理:logging -清晰的执行过程,快速定位问题持续集成:Jenkins(通过插件HTML Publisher/git/Email Extension)进行自动构建,生成HTML,发送邮件2、自动化框架的设计、维护:1、数据与代码分离,(数据驱动)=数据驱动框架=例如:参数不一样,响应不一样2、结构分层(数据层,用例层,逻辑性)逻辑层:公用的方法,封装起来,避免用例层的代码冗余数据层:例如,设计Excel,excel读取,参数
17、化替换等用例层:存放测试用例十五、在接口自动化测试中都用到了哪些包:pymysql:连接数据库ddt:requests:urllib:xlrd:xlwt:xlutils:十六、根据什么来做断言?1、协议状态码: 200,404,5032、业务状态码:status:03、业务数据十七、具体的在这个项目中自动化怎么应用到实际的,您对自动化结果的分析完成所有的自动化测试框架的设计和实现后,进行接口测试,然后集成到jenkins,配置定时执行,生成html报表,查看测试通过率,查看接口的功能每次发版时,进行回归测试,新功能开发未提测前十八、做好测试计划的关键是什么?明确测试目的,增强测试计划的实用性,
18、保证测试用例的实用性和覆盖率,完全需求文档和规格指标书等,严格界定测试周期,测试轮次,测试覆盖模块等十九、super 是干嘛用的?super 用于继承父类的方法、属性。super 是新式类中才有的,所以 Python2 中使用时,要在类名的参数中写 Object。使用 super 可以提高代码的复用性、可维护性。父类:class Car():def _init_(self,make,model,year):self.make=makeself.model=modelself.year=yeardef .class ElectricCar(Car):-初始化父类的属性super()._init_(make,model,year):def .子类就可以使用父类的属性二十、L = 1, 2, 3, 11, 2, 5, 3, 2, 5, 3,用一行代码得出 11, 1, 2, 3, 5二十一、L = 1, 2, 3, 4, 5,L10:空列表二十二、list= 1, 2, 3, 4,如何得出 1234list=1,2,3,4list2=foriinlist:list2=list2+str(i)print(list2)
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2