今天我们要聊的是如何使用Python进行自动化测试。Python因为其简洁易懂的语法,成为了自动化测试领域的首选语言之一。无论是Web应用、API接口还是桌面应用程序,Python都能轻松应对。

什么是自动化测试?

自动化测试是使用工具和脚本来自动执行测试用例的过程。相比手动测试,自动化测试可以提高测试效率,减少人为错误,加快开发周期。Python提供了多种库和框架来支持自动化测试,比如 unittest、pytest 和 Selenium

安装必要的库

在开始之前,我们需要安装一些必要的库。打开终端或命令提示符,输入以下命令:

pip install pytest selenium requests

使用 unittest 进行单元测试

  unittest 是Python标准库中的一个模块,用于编写和运行单元测试。下面是一个简单的例子:

import unittest

  class TestMathOperations(unittest.TestCase):

   def test_addition(self):

   result = 1 + 1

   self.assertEqual(result, 2) # 断言结果是否等于2

   def test_subtraction(self):

   result = 5 - 3

   self.assertEqual(result, 2) # 断言结果是否等于2

  if __name__ == '__main__':

   unittest.main()

 运行这段代码,你会看到类似如下的输出:

 ..

  ----------------------------------------------------------------------

  Ran 2 tests in 0.001s

  OK

使用 pytest 进行更强大的测试

  pytest 是一个非常流行的第三方测试框架,它比 unittest 更加灵活和强大。下面是一个 pytest 的例子:

def test_addition():

   assert 1 + 1 == 2 # 断言结果是否等于2

  def test_subtraction():

   assert 5 - 3 == 2 # 断言结果是否等于2

 保存文件为 test_math.py,然后在终端中运行:

pytest test_math.py

你会看到类似如下的输出: 

 ============================= test session starts ==============================

  collected 2 items

  test_math.py .. [100%]

  ============================== 2 passed in 0.01s ===============================

使用 Selenium 进行Web自动化测试

  Selenium 是一个强大的Web自动化测试工具,可以模拟用户在浏览器中的操作。首先,你需要下载对应浏览器的WebDriver。以Chrome为例,你可以从这里下载。

  安装完成后,编写如下代码:

 from selenium import webdriver

  from selenium.webdriver.common.by import By

  # 启动Chrome浏览器

  driver = webdriver.Chrome()

  # 打开Google首页

  driver.get("https://www.google.com")

  # 查找搜索框并输入文本

  search_box = driver.find_element(By.NAME, "q")

  search_box.send_keys("Python自动化测试")

  # 提交搜索

  search_box.submit()

  # 等待页面加载完成

  driver.implicitly_wait(10)

  # 验证搜索结果

  assert "Python自动化测试" in driver.title

  # 关闭浏览器

  driver.quit()

运行这段代码,你会看到浏览器自动打开Google首页,输入搜索词并提交搜索,最后验证搜索结果是否包含“Python自动化测试”。

  使用 requests 进行API测试

  requests 是一个非常方便的HTTP库,可以用来发送HTTP请求。下面是一个简单的API测试例子:

 import requests

  def test_api():

   url = "https://api.example.com/data"

   response = requests.get(url)

  

   # 检查响应状态码

   assert response.status_code == 200

  

   # 检查响应数据

   data = response.json()

   assert "key" in data

  test_api()

实战案例:自动化测试一个Web应用

  假设我们有一个简单的Web应用,用户可以在其中添加和删除任务。我们将使用 Selenium 来编写自动化测试脚本。

  应用结构:

  ·index.html:主页面

  · app.js:JavaScript逻辑

  · server.py:Flask服务器

  index.html:

  <!DOCTYPE html>

  <html lang="en">

  <head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Task Manager</title>

  </head>

  <body>

   <h1>Task Manager</h1>

   <input type="text" id="task-input" placeholder="Enter a task">

   <button id="add-task">Add Task</button>

   <ul id="task-list"></ul>

   <script src="app.js"></script>

  </body>

  </html>

app.js:

document.getElementById('add-task').addEventListener('click', function() {

   const taskInput = document.getElementById('task-input');

   const taskList = document.getElementById('task-list');

   if (taskInput.value.trim() !== '') {

   const li = document.createElement('li');

   li.textContent = taskInput.value;

   taskList.appendChild(li);

   taskInput.value = '';

   }

  });

server.py:

from flask import Flask, send_from_directory

  app = Flask(__name__, static_url_path='', static_folder='.')

  @app.route('/')

  def index():

   return send_from_directory('.', 'index.html')

  if __name__ == '__main__':

   app.run(debug=True)

 测试脚本:

 from selenium import webdriver

  from selenium.webdriver.common.by import By

  import time

  # 启动Chrome浏览器

  driver = webdriver.Chrome()

  # 打开Web应用

  driver.get("http://127.0.0.1:5000/")

  # 查找输入框和按钮

  task_input = driver.find_element(By.ID, "task-input")

  add_task_button = driver.find_element(By.ID, "add-task")

  # 输入任务并点击添加按钮

  task_input.send_keys("Learn Python")

  add_task_button.click()

  # 等待页面更新

  time.sleep(1)

  # 验证任务是否添加成功

  task_list = driver.find_element(By.ID, "task-list")

  tasks = task_list.find_elements(By.TAG_NAME, "li")

  assert len(tasks) == 1

  assert tasks[0].text == "Learn Python"

  # 关闭浏览器

  driver.quit()

 总结

  本文介绍了如何使用Python进行自动化测试,包括单元测试、Web自动化测试和API测试。我们使用了 unittest、pytest、Selenium 和 requests 等工具,并通过一个实战案例展示了如何自动化测试一个简单的Web应用。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐