本文目录导读:

“测试用例执行脚本”通常指的是用于自动化执行测试用例的代码,它是自动化测试的核心,根据你使用的测试工具和编程语言,它的形式和实现方式有所不同。
下面我给你拆解一下这个概念,并提供几种常见场景下的脚本示例。
核心概念
一个测试用例执行脚本通常包含以下几个部分:
- 准备(Setup):初始化测试数据、打开浏览器、连接数据库等。
- 执行(Action):模拟用户操作(点击、输入)或 API 调用。
- 断言(Assertion):验证实际结果是否等于预期结果。
- 清理(Teardown):关闭连接、清理数据。
常见场景示例
API 自动化测试(Python + Pytest + Requests)
这是最常见的后端测试,脚本逻辑非常清晰。
# test_api_user.py
import requests
def test_create_user_success():
"""测试用例:创建用户 - 成功场景"""
# 1. 准备(Setup)
url = "https://api.example.com/users"
user_data = {"name": "张三", "email": "zhangsan@test.com"}
# 2. 执行(Action)
response = requests.post(url, json=user_data)
# 3. 断言(Assertion)
assert response.status_code == 201 # 期望返回201 Created
assert response.json()["name"] == "张三"
# 4. 清理(Teardown) - 一般通过专门的清理用例或接口
def test_create_user_missing_email():
"""测试用例:创建用户 - 缺少邮箱(异常场景)"""
url = "https://api.example.com/users"
user_data = {"name": "李四"} # 缺少email字段
response = requests.post(url, json=user_data)
# 期望返回400错误
assert response.status_code == 400
assert "error" in response.json()
Web UI 自动化测试(Python + Selenium + Pytest)
模拟用户在浏览器上的操作。
# test_web_login.py
from selenium import webdriver
from selenium.webdriver.common.by import By
def setup_function():
"""每个测试用例前的准备"""
global driver
driver = webdriver.Chrome()
driver.get("https://example.com/login")
def teardown_function():
"""每个测试用例后的清理"""
driver.quit()
def test_login_success():
"""测试用例:成功登录"""
# 1. 准备(Setup)已经在 setup_function 中完成
# 2. 执行(Action)
driver.find_element(By.ID, "username").send_keys("admin")
driver.find_element(By.ID, "password").send_keys("password123")
driver.find_element(By.ID, "loginBtn").click()
# 3. 断言(Assertion)
# 期望跳转到首页,并看到“欢迎回来”字样
welcome_text = driver.find_element(By.CLASS_NAME, "welcome_msg").text
assert "欢迎回来" in welcome_text
def test_login_failed_wrong_password():
"""测试用例:密码错误登录失败"""
driver.find_element(By.ID, "username").send_keys("admin")
driver.find_element(By.ID, "password").send_keys("wrongpass")
driver.find_element(By.ID, "loginBtn").click()
# 期望看到错误提示
error_msg = driver.find_element(By.ID, "error_msg").text
assert "密码错误" in error_msg
移动端 App 测试(Java + Appium + TestNG)
// AndroidLoginTest.java
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.testng.annotations.*;
public class AndroidLoginTest {
private AndroidDriver<MobileElement> driver;
@BeforeMethod
public void setUp() {
// 准备:启动App
// ... (DesiredCapabilities 配置代码)
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@Test
public void testLoginWithQRCode() {
// 执行:点击二维码登录按钮
driver.findElementById("com.example.app:id/qr_btn").click();
// 断言:二维码页面是否打开
Boolean isDisplayed = driver.findElementById("com.example.app:id/qr_image").isDisplayed();
Assert.assertTrue(isDisplayed, "二维码未显示");
}
@AfterMethod
public void tearDown() {
// 清理:关闭App
driver.quit();
}
}
执行脚本的几种运行方式
写好脚本后,你需要执行它:
-
命令行直接运行:
# Python pytest test_api_user.py -v pytest test_web_login.py -v --browser=chrome # Java (Maven) mvn test -Dtest=AndroidLoginTest
-
集成到 CI/CD(持续集成/持续交付) 流水线(如 Jenkins、GitLab CI): 在 CI 配置文件中定义步骤,代码合并时自动触发脚本执行。
-
通过测试管理平台(如 TestRail、Zephyr、Xray): 平台可以触发这些脚本,并将执行结果回传给测试用例库。
测试用例与执行脚本的关系(澄清一个常见误区)
| 维度 | 测试用例(Test Case) | 执行脚本(Test Script) |
|---|---|---|
| 本质 | 文档/设计 | 代码/程序 |
| 目的 | 定义“测什么”和“怎么测” | 让计算机自动执行“怎么测” |
| 维护者 | 测试用例工程师(手动功能测试人员) | 自动化测试工程师/开发工程师 |
| 关系 | 脚本是实现用例的一种方式 | 一个脚本可以对应一个或多个用例 |
- 你在 Excel/Jira/TestRail 里写的那条:“步骤1:输入用户名,步骤2:输入密码,步骤3:点击登录,预期:跳转到首页” —— 这是测试用例。
- 上面那段 Python 代码(
driver.find_element...click())—— 这是执行脚本。
- “测试用例执行脚本” = 一段代码,它自动化地模拟测试用例中的步骤,并自动比对结果。
- 核心三要素:准备 → 执行 → 断言。
- 常见框架:
- API:Python + Requests + Pytest
- Web UI:Java + Selenium + TestNG (或 Python + Selenium + Pytest)
- 移动端:Java + Appium + TestNG (或 Python + Appium + Pytest)
- 关键误区:脚本是代码实现,测试用例是文档/设计,两者相辅相成但并非一回事。
如果你想针对某个特定场景(比如接口测试、Selenium、或者某个框架如 Cypress/Playwright)深入探讨,可以告诉我,我可以给你更具体的脚本示例和最佳实践。