Pytest 实战笔试试题(含详细答案解析)_第1页
Pytest 实战笔试试题(含详细答案解析)_第2页
Pytest 实战笔试试题(含详细答案解析)_第3页
Pytest 实战笔试试题(含详细答案解析)_第4页
Pytest 实战笔试试题(含详细答案解析)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Pytest实战笔试试题(含详细答案解析)适用人群:Python测试工程师、自动化测试初学者、职场技能考核考试说明:满分100分,答题时间60分钟,所有题目基于原生pytest框架,无偏题怪题,贴合工作实战一、单项选择题(每题3分,共10题,30分)1、以下关于pytest和unittest的区别,说法错误的是?()A、pytest兼容unittest用例,unittest不兼容pytest用例B、pytest用例无需继承类,普通函数即可执行C、unittest支持参数化装饰器,pytest不支持D、pytest自带更详细的失败日志和断言信息2、pytest默认的用例命名规则,以下可以被自动识别执行的是?()A、deflogin():B、deftest_login():C、classLoginTest():D、defLogin_Test():3、pytest中用来实现用例参数化的装饰器是?()A、@pytest.runB、@pytest.mark.parametrizeC、@pytest.mark.dataD、@pytest.params4、执行pytest命令时,只运行当前目录下失败的用例,需要加的参数是?()A、-xB、-vC、--lfD、-s5、pytest中,关于fixture用法说法正确的是?()A、fixture必须写在测试用例内部B、fixture可以实现前置、后置操作,替代setup/teardownC、fixture不支持数据返回D、fixture无法全局复用6、想要在pytest执行过程中,打印用例中的print日志,需要添加的参数是?()A、-qB、-sC、-nD、-h7、pytest配置文件的标准文件名是?()A、pytest.configB、config.iniC、pytest.iniD、setting.py8、以下不属于pytest标记(mark)用法的是?()A、跳过指定用例B、分类执行用例(冒烟、回归)C、修改Python解释器版本D、预期用例失败9、pytest中conftest.py文件的作用是?()A、存放测试报告B、全局共享fixture,无需导入直接使用C、存放测试数据ExcelD、单独存放测试用例10、想要多线程/多进程并行执行pytest用例,需要安装的插件是?()A、pytest-htmlB、pytest-xdistC、pytest-parallelD、pytest-runner二、填空题(每空2分,共10空,20分)1、pytest中,________参数可以展示用例详细执行过程。2、fixture的________参数可以设置用例作用域,常见取值有function、class、module、session。3、跳过测试用例的装饰器是________,预期用例失败的装饰器是________。4、pytest中,________文件是全局配置文件,优先级最高,可配置用例规则、标记、日志。5、执行指定单个测试文件的命令格式是________。6、pytest生成html测试报告需要安装________插件。7、fixture中使用________关键字可以实现后置teardown操作。8、只执行带smoke标记的用例,命令为________。三、简答题(每题6分,共5题,30分)1、简单说说pytest中fixture和传统unittest的setup/teardown相比,有哪些优势?2、简述conftest.py的使用规则和工作原理。3、pytest常用的命令行参数-v、-s、-x、--lf、-n分别是什么作用?4、pytest如何实现用例分层执行(冒烟用例、回归用例分开跑)?5、说说pytest用例的失败重试如何实现,需要什么插件和命令?四、实操编程题(每题10分,共2题,20分)1、编写pytest代码:实现一个加法函数测试,完成3组参数化用例(1+2、5+5、10-3),断言结果正确。2、编写全局fixture:实现每个用例执行前打印“开始执行测试用例”,执行后打印“测试用例执行结束”,无需手动导入,所有用例自动生效。参考答案及详细解析一、单项选择题答案1、C解析:pytest原生支持参数化,且语法更简洁、灵活,比unittest参数化更好用。2、B解析:pytest默认规则:测试函数以test_开头,测试类以Test开头,测试方法以test_开头。3、B解析:@pytest.mark.parametrize是pytest标准参数化装饰器,支持多组数据、多参数入参。4、C解析:--lf(lastfailed)只执行上一次失败的用例;-x是遇到失败立即停止执行;-v详细日志;-s输出打印日志。5、B解析:fixture独立于用例、支持返回数据、支持全局共享、可灵活实现前置后置,是pytest核心功能。6、B解析:默认pytest会屏蔽print输出,-s关闭捕获,展示控制台打印日志。7、C解析:pytest.ini是pytest官方标准配置文件,存放项目pytest全局配置。8、C解析:mark主要用于用例标记、跳过、预期失败、用例分类,无法修改解释器版本。9、B解析:conftest.py用于存放全局fixture、钩子函数,同目录及子目录用例可直接调用,无需导入。10、B解析:pytest-xdist实现多进程并行执行,是自动化项目最常用的并行插件。二、填空题答案1、-v2、scope3、@pytest.mark.skip、@pytest.mark.xfail4、pytest.ini5、pytest文件名.py6、pytest-html7、yield8、pytest-msmoke三、简答题答案(实战标准作答)1、fixture对比setup/teardown的优势①灵活性更高:支持函数、类、模块、会话多级别作用域,可精准控制生效范围;②复用性更强:通过conftest全局共享,无需重复编写、无需导入;③支持数据返回:可以返回测试数据、浏览器对象、接口session等给用例使用;④语法简洁:无需固定类结构,独立定义,按需调用;⑤前后置分离:通过yield清晰区分前置操作和后置回收操作。2、conftest.py使用规则和原理①是pytest专属全局配置文件,无需手动导入,pytest自动识别加载;②作用范围:当前目录及所有子目录的测试用例均可使用其中的fixture、钩子函数;③项目中可存在多个conftest.py,层级越高优先级越高;④主要用途:存放全局前置后置fixture、自定义标记、全局钩子、公共测试方法。3、常用命令行参数作用-v:展示详细的用例执行日志、用例名称、执行结果;-s:关闭日志捕获,输出用例中print打印的内容;-x:遇到第一个失败用例,立即停止后续执行;--lf:仅执行上一次运行失败的所有用例,用于回归bug;-n:搭配xdist插件,指定多进程并行执行用例。4、pytest实现用例分层执行①在pytest.ini中注册自定义标记(smoke/regression),避免报警告;②在对应用例上添加装饰器@pytest.mark.smoke(冒烟用例)、@pytest.mark.regression(回归用例);③命令行按需执行:pytest-msmoke只跑冒烟用例,pytest-mregression只跑回归用例,实现分层管理。5、pytest用例失败重试实现方式①需要安装插件:pytest-rerunfailures;②命令行执行:pytest--reruns重试次数;③示例:pytest--reruns2表示用例失败后自动重试2次,常用于网络波动、偶现bug场景。四、实操编程题答案1、参数化加法测试用例python

importpytest

#被测函数

defadd(a,b):

returna+b

#参数化测试用例

@pytest.mark.parametrize("a,b,expect",[(1,2,3),(5,5,10),(10,-3,7)])

deftest_add(a,b,expect):

res=add(a,b)

assertres==expect

2、全局前后置fixture(所有用例自动生效)#写入conftest.py文件,全局生效,无需导入pyt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论