如何写一个脚本简易自动化测试

wen 实用脚本 2

从零开始的实战指南

目录导读

  1. 为什么需要脚本自动化测试? —— 场景与价值解析
  2. 脚本自动化测试的核心要素 —— 工具、语言、框架选型
  3. 手把手编写第一个测试脚本 —— Python + Selenium 实战
  4. 常见问题与问答集锦 —— 解决初学者90%的困惑
  5. 脚本优化与扩展 —— 让测试更稳定、更高效
  6. 搜索引擎优化要点 —— 如何让文章在必应与谷歌中排名靠前

为什么需要脚本自动化测试?

1 手动测试的痛点

想象你每天需要重复点击100次“登录按钮”,验证100组用户名密码——这不仅是时间浪费,更会让测试人员陷入机械疲劳,导致漏测,统计显示,手动测试中约30%的回归测试缺陷是因为人为疏忽遗漏的。

如何写一个脚本简易自动化测试

2 自动化测试的三大价值

  • 效率提升:一个脚本可替代5-10人天的手工测试工作量
  • 准确性保障:脚本不会因疲劳而跳过步骤,每次执行结果完全一致
  • 持续回归:配合CI/CD(持续集成/持续部署)管道,每次代码提交自动触发测试

3 适用场景判断

不是所有测试都适合自动化,适合的场景包括:
✔️ 高频回归测试(如登录、支付流程)
✔️ 数据驱动测试(如多组输入输出验证)
✔️ 跨平台兼容性测试(不同浏览器/操作系统)

不适合的场景:
❌ UI频繁变化的界面
❌ 需要大量人工判断的模糊测试(如图片美感检测)


脚本自动化测试的核心要素

1 脚本语言选型

语言 优势 适合人群
Python 语法简洁,生态丰富(Selenium/Appium) 初学者、快速验证
JavaScript 与前端深度集成,适合API测试 全栈开发者
bash/shell 轻量级,适合系统级命令验证 运维工程师

推荐起点:Python,因为其“即写即用”特性,且社区有海量免费教程。

2 核心工具链

  • Web测试:Selenium(浏览器自动化)
  • API测试:Requests(HTTP请求库)+ Pytest(测试框架)
  • 移动测试:Appium(跨平台)
  • 报告生成:Allure(可视化测试报告)
  • 持续集成:Jenkins / GitHub Actions

3 测试脚本的最小结构

一个完整的测试脚本应包含:

# example_test.py
import requests
def test_login_success():
    response = requests.post("https://api.example.com/login", 
                             json={"user": "admin", "pass": "123456"})
    assert response.status_code == 200
    assert response.json()["code"] == 0

手把手编写第一个测试脚本

1 环境准备(3分钟搞定)

# 安装Python(3.8+)
# 安装依赖
pip install selenium pytest webdriver-manager

2 实战:测试百度搜索功能

# test_baidu.py
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
class TestBaiduSearch:
    def setup_method(self):
        self.driver = webdriver.Chrome(ChromeDriverManager().install())
        self.driver.maximize_window()
    def teardown_method(self):
        self.driver.quit()
    def test_search_automation(self):
        # 打开百度
        self.driver.get("https://www.baidu.com")
        # 定位搜索框并输入关键词
        search_box = self.driver.find_element(By.ID, "kw")
        search_box.send_keys("如何写自动化脚本")
        # 点击搜索按钮
        search_btn = self.driver.find_element(By.ID, "su")
        search_btn.click()
        # 验证结果(检查标题包含关键字)
        assert "如何写自动化脚本" in self.driver.title

3 运行脚本

pytest test_baidu.py -v

输出示例:

test_baidu.py::TestBaiduSearch::test_search_automation PASSED

常见问题与问答集锦

Q1: 脚本运行时报错"元素找不到"怎么办?

A:常见原因及解法:

  • 动态加载:使用WebDriverWait显式等待

    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, "kw"))
    )
  • iframe嵌套:先切换到iframe再查找

  • XPath变化:改用更稳定的CSS选择器

Q2: 如何测试需要登录的页面?

A:使用session维持登录状态:

# 方式1:携带cookie
driver.get("https://example.com")
driver.add_cookie({"name": "session_id", "value": "abc123"})
# 方式2:通过API获取token后注入
token = requests.post("https://api/login", ...).json()["token"]
driver.execute_script("window.localStorage.setItem('token','%s')" % token)

Q3: 测试脚本跑得好好的,突然失效了?

A:大概率是因为:

  1. 页面元素class/id修改(需更新选择器)
  2. 服务器返回超时(增加重试机制)
  3. 浏览器版本更新导致驱动不兼容(使用webdriver-manager自动匹配)

Q4: 如何生成美观的测试报告?

A:使用Allure框架:

pip install allure-pytest
pytest --alluredir=reports
allure serve reports  # 自动打开HTML报告

脚本优化与扩展

1 数据驱动测试

将测试数据与脚本分离,一次性验证多组数据:

import pytest
test_data = [
    ("user1", "pass1", True),
    ("user2", "wrong", False)
]
@pytest.mark.parametrize("username,password,expected", test_data)
def test_login(username, password, expected):
    result = login(username, password)
    assert result == expected

2 测试脚本的模块化

将重复操作封装成函数或类:

# base_page.py
class BasePage:
    def __init__(self, driver):
        self.driver = driver
    def find_element(self, locator):
        return WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located(locator)
        )
# login_page.py
class LoginPage(BasePage):
    def login(self, username, password):
        self.find_element((By.ID, "username")).send_keys(username)
        self.find_element((By.ID, "password")).send_keys(password)
        self.find_element((By.ID, "login_btn")).click()

3 集成到CI/CD管道

在GitHub Actions中配置:

# .github/workflows/test.yml
name: Auto Test
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - run: pip install -r requirements.txt
      - run: pytest --html=report.html

搜索引擎优化要点

1 关键词布局策略 包含“如何写”、“脚本”、“自动化测试”等核心词

  • H2/H3标签:自然融入“脚本自动化测试”、“Python Selenium”、“数据驱动”等长尾词
  • 内链:链接到站内其他相关文章(如“Selenium基础教程”、“Pytest入门”)

2 结构化数据

使用JSON-LD标记FAQ:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "脚本自动化测试需要多长时间学习?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "掌握基础只需3-5天,熟练需2-4周,前提是每天投入1-2小时实践。"
    }
  }]
}

3 用户体验优化

  • 代码块使用<pre><code>标签,并添加语言标记(如language-python
  • 使用<img>标签插入流程图截图,并填写alt属性
  • 段落长度控制在80-120字,便于快速阅读

总结与延伸阅读

编写脚本自动化测试并不神秘,核心是:选对工具 → 写可维护代码 → 持续优化,建议初学者从Python+Selenium开始,先完成单个页面的测试,再逐步扩展到多场景、多数据、全流程。

若想深入学习,可关注以下方向:

  • 接口自动化:使用Pytest+Requests做API测试
  • 性能测试:Locust模拟高并发
  • 视觉测试:Applitools实现像素级对比

自动化测试的价值不在于写多炫酷的脚本,而在于让测试变成可重复、可信任、低成本的持续过程

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