基本信息
文件名称:Python自动化测试面试题及答案(实战版).docx
文件大小:42.5 KB
总页数:30 页
更新时间:2025-09-25
总字数:约7.07千字
文档摘要

Python自动化测试面试题及答案(实战版)

一、基础篇(考察核心库与语法应用)

问题:用requests库发送POST请求时,如何分别处理form-data格式和JSON格式的参数?请写代码示例并说明区别。

答案:

核心区别在参数传递方式与请求头Content-Type:

代码示例:

importrequests

#1.form-data格式(含文件上传示例)

form_data={username:test,password:123456}

files={avatar:open(test.jpg,rb)}#可选,无文件可删

res1=requests.post(

url=/login,

data=form_data,

files=files#有文件时必传,无则省略

)

#2.JSON格式

json_data={user_id:123,info:{age:20,gender:male}}

res2=requests.post(

url=/get_user,

json=json_data#直接传字典,无需手动json.dumps

)

form-data(常用于文件上传或表单提交):用data参数传字典,需配合files(如有文件),requests会自动设置Content-Type:multipart/form-data;

JSON格式:用json参数传字典,requests会自动设置Content-Type:application/json并将字典转JSON字符串。

问题:Python自动化脚本中,为什么不推荐用time.sleep()做等待?selenium里更优的等待方式是什么?

答案:

time.sleep(n)是固定等待n秒,会导致两种问题:

更优方式是显性等待(精准控制)+隐性等待(全局兜底):

fromseleniumimportwebdriver

fromselenium.webdriver.support.uiimportWebDriverWait

fromselenium.webdriver.supportimportexpected_conditionsasEC

frommon.byimportBy

driver=webdriver.Chrome()

#隐性等待:全局设置,查找元素时最多等10秒(超时未找到才报错)

driver.implicitly_wait(10)

#显性等待:针对特定元素,等它可点击再操作(10秒内满足条件就执行,不浪费时间)

WebDriverWait(driver,10).until(

EC.element_to_be_clickable((By.ID,submit-btn))#条件:元素可点击

).click()

若元素提前加载完成,多余等待会浪费时间(比如脚本跑100个用例,每个多等2秒,累计浪费200秒);

若元素加载慢于n秒,等待结束后元素仍未出现,会导致定位失败。

问题:用Pytest运行测试用例时,如何只执行标记为“接口”的用例?如何跳过某个已知失败的用例?

答案:

需用@pytest.mark标记用例,配合命令行参数或装饰器实现:

标记并执行指定用例:

importpytest

#标记用例类型

@pytest.mark.api#标记为接口用例

deftest_login():

assert1==1

@pytest.mark.ui#标记为UI用例

deftest_home_page():

assert2==2

命令行执行“仅接口用例”:pytest-mapitest_case.py(需先安装pytest:pipinstallpytest)。

跳过已知失败的用例:

@pytest.mark.skip(reason=接口临时维护,暂不执行)#无条件跳过

deftest_pay():

assert3==4

#条件跳过(比如Python版本3.8时跳过)

importsys

@pytest.mark.skipif(sys.version_info(3,8),reason=需Python3.8+)

deftest_new_feature():

assert5==5

二、进阶篇(考察框架设计与问题解决)

问题:在接口自动化中,如何处理“依赖接口”(比如测试“下单”接口前,必须先调用“登录”获取token)?请用Pytest写示例。

答案:

用Pytest