Python自动化测试面试题及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python自动化测试面试题及答案

一、基础应用类

问题:Python自动化测试中,unittest和pytest的核心区别是什么?实际项目中你更倾向选哪个?为什么?

答案:

核心区别有3点:①用例组织:unittest需继承TestCase类,pytest支持函数/类(无需继承);②参数化:unittest需借助ddt库,pytest用@pytest.mark.parametrize原生支持,语法更简洁;③Fixture:unittest靠setUp/tearDown(仅支持类级/方法级),pytestFixture可自定义作用域(函数/类/模块/会话),还能跨用例共享(如登录态)。

实际选pytest,因为项目中常需多模块复用登录、环境初始化等逻辑,Fixture的灵活度能减少重复代码;且pytest的断言更自然(支持asserta==b,无需self.assertEqual),报错信息也更清晰,定位问题更快。

问题:Selenium中常用的元素定位方式有哪些?当遇到动态ID(如每次刷新ID带随机数)时,你会怎么处理?

答案:

常用定位方式:id、name、class_name、xpath、css_selector、link_text、partial_link_text、tag_name。

动态ID处理:①优先用相对xpath,避开动态部分,比如ID是“user_12345”(12345随机),可写//input[contains(@id,user_)];②若元素有唯一属性(如data-name、placeholder),用//input[@data-name=username];③若元素在固定层级,用父子/兄弟关系定位,比如//div[@class=login-form]/input;④绝对不用tag_name(除非页面只有一个该标签),避免定位到多个元素。

问题:Selenium中如何处理下拉框?分两种情况说明(select标签和非select标签)。

答案:

①select标签下拉框:用Selenium的Select类,先定位到select元素,再通过select_by_value(值)、select_by_visible_text(文本)、select_by_index(索引)选择,比如:

fromselenium.webdriver.support.selectimportSelect

select_ele=driver.find_element(By.ID,city)

Select(select_ele).select_by_visible_text(上海)

②非select标签(如div/ul模拟的下拉框):先点击下拉框触发展开,再定位到目标选项点击,注意加显式等待避免元素未加载:

#点击展开下拉框

driver.find_element(By.ID,city-dropdown).click()

#等待选项加载,再点击

WebDriverWait(driver,10).until(

EC.visibility_of_element_located((By.XPATH,//li[text()=上海]))

).click()

二、框架与设计类

问题:什么是PO模式(PageObjectModel)?你在项目中是怎么设计PO层的?有什么好处?

答案:

PO模式是把页面的元素定位和操作逻辑封装成独立“页面类”,测试用例只调用页面类的方法,不直接写定位和操作。

项目设计:①每个页面一个类(如LoginPage、HomePage);②类中定义“元素定位”(用元组存,如username_input=(By.ID,username))和“操作方法”(如definput_username(self,text):self.driver.find_element(*self.username_input).send_keys(text));③抽一个BasePage类,封装通用方法(如find_element、click、send_keys,包含显式等待),所有页面类继承BasePage。

好处:①解耦:页面改版时,只改对应页面类,不用改所有用例;②复用:多个用例用到同一页面操作(如登录),只需调用一次方法;③可读性高:用例里看的是login_page.login(admin,123),清晰知道做什么,不用看一堆定位代码。

问题:接口自动化测试中,如何用requests库发送POST请求?如果接口需要登录态(Cookie/Ses

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档