测试用例执行脚本?

wen 实用脚本 46

本文目录导读:

测试用例执行脚本?

  1. 核心概念
  2. 常见场景示例
  3. 执行脚本的几种运行方式
  4. 测试用例与执行脚本的关系(澄清一个常见误区)

“测试用例执行脚本”通常指的是用于自动化执行测试用例的代码,它是自动化测试的核心,根据你使用的测试工具和编程语言,它的形式和实现方式有所不同。

下面我给你拆解一下这个概念,并提供几种常见场景下的脚本示例。

核心概念

一个测试用例执行脚本通常包含以下几个部分:

  1. 准备(Setup):初始化测试数据、打开浏览器、连接数据库等。
  2. 执行(Action):模拟用户操作(点击、输入)或 API 调用。
  3. 断言(Assertion):验证实际结果是否等于预期结果。
  4. 清理(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();
    }
}

执行脚本的几种运行方式

写好脚本后,你需要执行它:

  1. 命令行直接运行:

    # Python
    pytest test_api_user.py -v
    pytest test_web_login.py -v --browser=chrome
    # Java (Maven)
    mvn test -Dtest=AndroidLoginTest
  2. 集成到 CI/CD(持续集成/持续交付) 流水线(如 Jenkins、GitLab CI): 在 CI 配置文件中定义步骤,代码合并时自动触发脚本执行。

  3. 通过测试管理平台(如 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)深入探讨,可以告诉我,我可以给你更具体的脚本示例和最佳实践。

抱歉,评论功能暂时关闭!