




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年Python二级考试模拟试题集:实战演练版,Python自动化测试实践考试时间:______分钟总分:______分姓名:______一、请根据以下要求编写Python代码。1.定义一个函数`calculate_statistics(numbers)`,该函数接收一个数字列表`numbers`作为参数。函数需要计算并返回该列表的平均值、中位数和最大值。如果列表为空,则返回`None`对于所有三个统计量。假设输入列表中的数字都是整数。2.使用`requests`库向"/todos/1"发送GET请求。将返回的JSON响应内容解析为一个Python字典,并提取出`title`和`completed`这两个字段的值,最后打印这两个字段的值。二、请编写Python代码。3.使用`unittest`测试框架编写一个测试类`TestTodoRequest`,该类继承自`unittest.TestCase`。在该类中,编写一个测试方法`test_get_todo_1`,该方法应使用`requests`库向"/todos/1"发送GET请求,并验证返回的JSON响应中`status`字段的值是否为`"ok"`。请确保使用`assertEqual`方法进行断言。4.假设你正在使用`selenium`和`WebDriverManager`自动化测试一个网页。请编写Python代码,实现以下功能:*打开Chrome浏览器(无需安装,使用WebDriverManager自动处理)。*访问"/"。*定位到页面上的搜索框元素(假设其ID为`search-box`)。*在搜索框中输入文字"Python"。*定位到页面上的搜索按钮元素(假设其类名为`search-button`)。*点击搜索按钮。*等待页面加载完成(使用显式等待,等待一个特定元素出现,例如一个ID为`results`的元素)。*关闭浏览器。三、请阅读以下Python代码片段,并回答相关问题。5.```pythonimportunittestfromseleniumimportwebdriverfrommon.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECclassTestLogin(unittest.TestCase):defsetUp(self):self.driver=webdriver.Chrome()self.driver.get("/login")deftest_valid_login(self):username_field=self.driver.find_element(By.ID,"username")password_field=self.driver.find_element(By.ID,"password")login_button=self.driver.find_element(By.ID,"login-btn")username_field.send_keys("testuser")password_field.send_keys("testpass")login_button.click()try:#Assumingthere'sa"Welcome"messageaftersuccessfulloginwelcome_message=WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.ID,"welcome-message")))self.assertEqual(welcome_message.text,"Welcome,testuser!")exceptTimeoutException:print("Loginpagetooktoolongtoloadorwelcomemessagenotfound.")deftearDown(self):self.driver.quit()```请解释这段代码的主要功能,并指出其中使用了哪些自动化测试相关的概念或技术。四、请根据以下要求编写Python代码。6.编写一个函数`extract_urls(text)`,该函数接收一个字符串`text`作为参数。字符串中可能包含多个URL(例如使用http,https协议的网页链接)。函数需要使用正则表达式从字符串中找出所有可能的URL,并将它们作为一个列表返回。假设URL之间以及URL与其他文本之间由空格或标点符号分隔。7.使用`pytest`测试框架编写测试用例,验证函数`extract_urls(text)`的功能。至少编写三个测试用例,分别测试:*输入字符串中包含一个URL。*输入字符串中包含多个URL。*输入字符串中不包含任何URL。五、请编写Python代码。8.编写代码实现一个简单的Python单元测试框架,至少需要包含以下功能:*能够注册测试用例(假设测试用例是定义了`test_method`方法的类)。*能够遍历所有注册的测试用例。*能够调用测试用例中的`test_method`方法。*能够捕获`test_method`方法执行过程中的抛出异常(如果有)。*能够简单报告测试总数和通过(即不抛出异常)的测试数量。注意:这不是一个要求完整的单元测试框架,而是要求实现其核心的、简化版的执行逻辑。9.假设有一个API的JSON响应如下:```json{"data":[{"id":1,"name":"ItemA","price":10.99},{"id":2,"name":"ItemB","price":23.50},{"id":3,"name":"ItemC","price":null}]}```请编写Python代码,使用`json`库加载上述JSON字符串,并计算所有`price`字段非`null`的商品价格的总和。如果某个商品的`price`是`null`,则忽略该商品。最后打印出计算出的总价格。试卷答案一、请根据以下要求编写Python代码。1.```pythondefcalculate_statistics(numbers):ifnotnumbers:returnNone,None,Noneavg=sum(numbers)/len(numbers)sorted_numbers=sorted(numbers)mid=len(numbers)//2median=(sorted_numbers[mid]+sorted_numbers[~mid])/2iflen(numbers)%2==0elsesorted_numbers[mid]max_val=max(numbers)returnavg,median,max_val```解析思路:*首先检查输入列表`numbers`是否为空,如果为空,则直接返回三个`None`。*计算平均值`avg`,使用`sum(numbers)`求和,然后除以`len(numbers)`得到平均值。*计算中位数`median`。先对列表进行排序`sorted_numbers`。如果列表长度为偶数,则中位数是中间两个数的平均值;如果为奇数,则中位数是中间那个数。*计算最大值`max_val`,使用内置函数`max(numbers)`。*返回计算得到的平均值、中位数和最大值。2.```pythonimportrequestsresponse=requests.get("/todos/1")data=response.json()print(data['title'])print(data['completed'])```解析思路:*导入`requests`库。*使用`requests.get()`方法向指定的URL发送GET请求,并将响应对象存储在`response`变量中。*使用`response.json()`方法将JSON格式的响应内容解析为Python字典,存储在`data`变量中。*通过字典的键访问所需字段,使用`data['title']`获取`title`字段的值,使用`data['completed']`获取`completed`字段的值。*使用`print()`函数打印这两个字段的值。二、请编写Python代码。3.```pythonimportunittestimportrequestsclassTestTodoRequest(unittest.TestCase):deftest_get_todo_1(self):response=requests.get("/todos/1")self.assertEqual(response.json()['status'],"ok")```解析思路:*导入`unittest`和`requests`库。*定义一个测试类`TestTodoRequest`,它继承自`unittest.TestCase`。*在类中定义一个测试方法`test_get_todo_1`,该方法以`self`作为参数。*在方法内部,使用`requests.get()`向指定URL发送GET请求。*使用`response.json()`将响应内容解析为字典。*使用`unittest`框架提供的`assertEqual()`方法,断言解析后的字典中`status`键对应的值是否等于`"ok"`。如果相等,测试通过;如果不相等,测试失败并抛出异常。4.```pythonfromseleniumimportwebdriverfrommon.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromwebdriver_manager.chromeimportChromeDriverManagerdriver=webdriver.Chrome(ChromeDriverManager().install())try:driver.get("/")search_box=driver.find_element(By.ID,"search-box")search_box.send_keys("Python")search_button=driver.find_element(By.CLASS_NAME,"search-button")search_button.click()WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,"results")))finally:driver.quit()```解析思路:*导入必要的`selenium`模块和`WebDriverManager`。*使用`ChromeDriverManager().install()`自动下载并获取ChromeDriver的路径,然后创建一个`webdriver.Chrome()`实例`driver`,这样无需手动指定驱动路径。*使用`try...finally...`结构确保无论测试过程中是否发生异常,最后都能执行`driver.quit()`来关闭浏览器,释放资源。*使用`driver.get()`方法打开指定的网页"/"。*使用`driver.find_element()`方法定位搜索框元素,通过`By.ID`指定元素ID为`"search-box"`。*使用`send_keys()`方法向搜索框输入文字"Python"。*使用`driver.find_element()`方法定位搜索按钮元素,通过`By.CLASS_NAME`指定元素类名为`"search-button"`。*使用`click()`方法点击搜索按钮。*使用`WebDriverWait()`结合`expected_conditions.presence_of_element_located()`实现显式等待,等待页面加载完成。等待条件是页面中出现一个ID为`"results"`的元素。设置最大等待时间为10秒。三、请阅读以下Python代码片段,并回答相关问题。5.主要功能:这段代码定义了一个使用`unittest`和`selenium`框架编写的自动化测试类`TestLogin`,用于测试一个网站的登录功能。在`setUp`方法中,它打开指定的登录页面并准备测试环境。在`test_valid_login`测试方法中,它模拟用户输入有效的用户名和密码,点击登录按钮,并验证是否成功登录(通过查找页面的"Welcome"消息)。`tearDown`方法用于在测试后关闭浏览器。自动化测试相关的概念或技术:测试框架(`unittest`)、测试固件(`setUp`/`tearDown`)、元素定位(`find_element`)、元素交互(`send_keys`、`click`)、显式等待(`WebDriverWait`与`presence_of_element_located`)、断言(`assertEqual`)、异常处理(`try...exceptTimeoutException`)。解析思路:*主要功能:代码的核心是自动化测试用户登录流程。`setUp`方法负责初始化,即创建WebDriver实例,打开登录页面。`test_valid_login`方法是具体的测试逻辑,执行输入用户名、密码,点击登录,并验证登录结果。`tearDown`方法负责清理,即关闭浏览器。*自动化测试概念/技术:*`unittest.TestCase`:使用`unittest`框架是自动化测试的基础,继承该类提供了测试运行和报告的基础设施。*`setUp`/`tearDown`:这两个方法用于设置(初始化)和清理(释放资源)测试环境,确保每个测试用例在独立的环境中运行。*`webdriver.Chrome()`:使用SeleniumWebDriver控制浏览器进行自动化交互。*`find_element(By.ID,...)`,`find_element(By.CLASS_NAME,...)`:Selenium的核心方法,用于在页面上查找DOM元素,通过不同的定位策略(如元素ID或类名)找到所需控件。*`send_keys(...)`:模拟键盘输入,用于填写表单字段。*`click()`:模拟鼠标点击操作,用于触发按钮等可点击元素的交互。*`WebDriverWait`/`EC.presence_of_element_located`:实现显式等待,等待某个特定条件成立(这里是指某个元素出现在DOM中)。这是处理动态网页加载的关键技术,比固定时间的隐式等待更可靠。*`expected_conditions`:提供预定义的等待条件,`presence_of_element_located`检查元素是否已在DOM中存在,但不一定可见。*`assertEqual(...)`:`unittest`框架的断言方法,用于验证预期结果与实际结果是否一致,是测试验证的核心步骤。这里用于确认登录成功后页面上出现了预期的欢迎信息。*`try...exceptTimeoutException`:异常处理机制,用于捕获显式等待超时的情况,表明等待的元素没有在指定时间内出现,可能指示测试失败或页面行为异常。四、请根据以下要求编写Python代码。6.```pythonimportredefextract_urls(text):url_pattern=pile(r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+')returnurl_pattern.findall(text)```解析思路:*导入`re`模块,用于使用正则表达式。*定义函数`extract_urls`,接收参数`text`。*定义正则表达式`url_pattern`。这个表达式匹配以`http`或`https`开头的URL。*`https?`:匹配"http"或"https"。`s?`表示字符's'可有可无。*`://`:匹配URL中的"://"部分。*`(?:[-\w.]|(?:%[\da-fA-F]{2}))+`:匹配URL的主干和路径部分。*`(?:...)`:非捕获组,用于组合模式,但不捕获匹配的文本。*`[-\w.]`:匹配字母、数字、下划线、点和短横线。`\w`匹配字母数字下划线,`-`和`.`需要转义。*`(?:%[\da-fA-F]{2})`:匹配URL编码的字符。`%`匹配字面量`%`,`[\da-fA-F]{2}`匹配两位十六进制数字。*`+`:表示前面的非捕获组可以出现一次或多次。*使用正则表达式对象的`findall`方法,在输入文本`text`中查找所有符合`url_pattern`的子串,这些子串就是匹配到的URL。`findall`返回一个列表。*返回包含所有找到的URL的列表。7.```pythonimportpytestimportrefromextract_urlsimportextract_urls#AssumingthefunctionfromQ6isdefinedinafilenamedextract_urls.py#Testcase1:SingleURLdeftest_extract_single_url():text="Checkthissite:"expected=[""]result=extract_urls(text)assertresult==expected,f"Expected{expected},got{result}"#Testcase2:MultipleURLsdeftest_extract_multiple_urls():text="Visitorformoreinfo."expected=["",""]result=extract_urls(text)assertresult==expected,f"Expected{expected},got{result}"#Testcase3:NoURLsdeftest_extract_no_urls():text="ThistextdoesnotcontainanyURLs."expected=[]result=extract_urls(text)assertresult==expected,f"Expected{expected},got{result}"```解析思路:*导入`pytest`模块(这是`pytest`测试框架的常用导入方式)和`re`模块。假设`extract_urls`函数定义在另一个名为`extract_urls.py`的文件中,并已成功导入。*TestCase1(`test_extract_single_url`):准备一个包含单个URL的测试字符串。期望结果是一个包含该URL的列表。调用`extract_urls`函数处理字符串,并将结果与期望结果进行比较。使用`assert`语句进行断言。如果断言失败(结果与期望不符),会抛出异常并显示错误信息。*TestCase2(`test_extract_multiple_urls`):准备一个包含多个URL的测试字符串。期望结果是一个包含所有这些URL的列表。调用`extract_urls`函数,并进行断言。*TestCase3(`test_extract_no_urls`):准备一个不包含任何URL的测试字符串。期望结果是空列表`[]`。调用`extract_urls`函数,并进行断言。*`pytest`框架会自动发现并运行这些以`test_`开头命名的函数作为测试用例。五、请编写Python代码。8.```pythonclassSimpleTestRunner:def__init__(self):self.tests=[]self.passed_count=0defregister_test(self,test_class):#Assumingtest_classhasamethodnamedtest_methodself.tests.append(test_class)defrun(self):self.passed_count=0fortest_classinself.tests:formethod_nameindir(test_class):ifmethod_name.startswith("test_"):method=getattr(test_class,method_name)try:method()self.passed_count+=1print(f"Test{method_name}passed.")exceptExceptionase:print(f"Test{method_name}failed:{e}")print(f"\nTotaltestsrun:{len(self.tests)*len([mforcinself.testsformindir(c)ifm.startswith('test_')])}")print(f"Testspassed:{self.passed_count}")#Exampleusage:#classMyTest:#deftest_method1(self):#assert1==1##runner=SimpleTestRunner()#runner.register_test(MyTest)#runner.run()```解析思路:*定义一个类`SimpleTestRunner`,它将负责运行测试。*类的初始化方法`__init__`接收一个参数,但这里为了简化,我们只存储测试类列表`self.tests`和通过的测试计数`self.passed_count`。*定义`register_test(self,test_class)`方法,接收一个测试类作为参数。将这个类添加到`self.tests`列表中,以便后续运行。*定义`run(self)`方法,这是执行测试的主体逻辑。*首先,将`passed_count`重置为0。*遍历`self.tests`列表中的每一个测试类。*对于当前测试类,使用`dir(test_class)`获取其所有属性和方法名称列表。*使用列表推导式和`startswith("test_")`过滤出所有以"test_"开头的字符串,这些字符串代表测试方法名。*遍历所有找到的测试方法名。*对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国动物疫苗市场免疫程序优化与营销策略报告
- 2025-2030中国功能性啤酒开发前景及健康宣称与法规合规评估报告
- 自然博物馆承包经营合同书5篇
- 2025安徽淮南高新区部分学校引进紧缺专业人才招聘39人模拟试卷及答案详解(历年真题)
- 2025年智能制造的能耗优化研究
- 2025年浙江大学医学院附属第二医院招聘医师助理人员若干人模拟试卷及答案详解(名师系列)
- 2025河南新乡市辉县市大成高级中学招聘考前自测高频考点模拟试题及一套答案详解
- 湖南襄阳南漳县招聘事业单位工作人员考试真题2024
- 2025年中国海峡人才市场将乐工作部见习生招聘2人考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025北京化工大学化办公室(中心)招聘1人考前自测高频考点模拟试题及答案详解(有一套)
- 2025年矿业权评估师考试(矿业权评估地质与矿业工程专业能力)全真冲刺试题及答案
- 2025秋人教鄂教版(2024)科学一年级第一单元走近科学《1“钓鱼”游戏》 教学设计
- 2026届高考物理一轮复习策略讲座
- 食品腐烂变质安全培训课件
- 隧道施工车辆安全培训课件
- 福建省厦门市槟榔中学2024-2025学年九年级上学期阶段评估检测(10月)英语试卷(含答案无听力原文及音频)
- 汽车发动机课件
- 2025年法院书记员招聘考试笔试试题含答案
- 重阳节活动致辞
- 地下室结构施工课件
- 2025至2030中国氢燃料电池堆行业项目调研及市场前景预测评估报告
评论
0/150
提交评论