1. 自动化测试函数基础认知
在软件测试领域,自动化测试已经成为提升效率的必备技能。作为从业十余年的测试工程师,我深刻体会到函数在自动化脚本中的核心地位。测试函数不同于普通开发函数,它们需要具备更强的容错性、可维护性和断言能力。
自动化测试函数主要分为三大类:
- 操作函数:模拟用户行为的低层操作,如click(), type()
- 断言函数:验证结果的检查点,如assertEqual(), verifyText()
- 工具函数:辅助测试流程的实用工具,如waitForElement(), generateData()
重要提示:测试函数必须遵循"单一职责原则",一个函数只做一件事。我曾见过把页面操作、数据校验、日志记录全塞进一个函数的案例,后期维护简直是噩梦。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 元素定位与操作函数详解
2.1 Selenium经典定位函数
findElement()系列是UI自动化的基石。根据项目经验,推荐以下定位策略优先级:
- ID定位(最快最稳定)
- CSS选择器(平衡性能和灵活性)
- XPath(复杂场景备用)
python复制# 最佳实践示例
search_input = driver.find_element(By.ID, "kw") # 百度搜索框
search_btn = driver.find_element(By.CSS_SELECTOR, "#su")
2.2 智能等待函数
新手常犯的错误是使用固定sleep()。我推荐组合使用:
- 隐式等待:driver.implicitly_wait(10)
- 显式等待:WebDriverWait + expected_conditions
python复制from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "dynamicElement"))
)
3. 断言函数的艺术
3.1 基本断言方法
unittest/pytest框架提供的核心断言:
- assertEqual(actual, expected)
- assertTrue(condition)
- assertRaises(exception)
血泪教训:永远要给断言添加有意义的失败信息,否则排查时想撞墙。我曾经因为assertTrue(len(list) == 3)没加描述,花了3小时定位列表长度问题。
3.2 高级断言技巧
对于复杂验证,推荐使用Hamcrest匹配器:
python复制from hamcrest import *
assert_that(response.json(), has_entry("status", "success"))
assert_that(process_time, less_than(1000)) # 性能断言
4. 数据驱动测试函数
4.1 参数化测试实现
pytest的参数化典范:
python复制import pytest
@pytest.mark.parametrize("input,expected", [
("admin", 200),
("guest", 403),
("", 401)
])
def test_login_status(input, expected):
assert login(input)
