找回密码
 立即注册
查看: 703|回复: 0

[其它] Pytest+selenium UI自动化测试实战实例

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-7-12 17:20:13 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-7-13 16:17 编辑

1. 引言

UI自动化测试是保证Web应用程序质量的重要手段。本文将介绍如何使用Pytest和Selenium进行UI自动化测试,通过一个实战实例,展示从环境配置到编写和运行测试用例的完整过程。

1.1 Pytest简介

Pytest是一个功能强大且灵活的Python测试框架,支持简单的单元测试到复杂的功能测试。它具有易用的语法、丰富的插件和强大的扩展性,非常适合与Selenium结合进行UI自动化测试。

1.2 Selenium简介

Selenium是一个流行的Web自动化测试工具,支持多种浏览器和操作系统。它允许使用不同的编程语言(如java、Python、C#)编写测试脚本,自动执行浏览器操作,模拟用户行为。

2. 环境配置

2.1 安装Python

确保系统中已安装Python。可以通过以下命令检查Python版本:

  1. python --version
复制代码


如果未安装Python,可以从Python官方网站下载并安装最新版本。

2.2 安装Selenium

使用pip安装Selenium库:

  1. pip install selenium
复制代码


2.3 安装Pytest

使用pip安装Pytest框架:

  1. pip install pytest
复制代码


2.4 配置WebDriver

下载与目标浏览器对应的WebDriver,并将其路径添加到系统环境变量中。例如,若使用Chrome浏览器,则需要下载ChromeDriver。

3. 编写测试用例

3.1 创建测试文件

在项目目录中创建一个名为`test_example.py`的文件,作为我们的测试文件。

3.2 导入必要的库

在测试文件中,导入Selenium和Pytest库:

  1. import pytest
  2. from selenium import webdriver
  3. from selenium.webdriver.common.by import By
复制代码


3.3 编写测试函数

编写一个简单的测试函数,用于打开Google主页并验证标题:

  1. def test_google_title():
  2.     driver = webdriver.Chrome()
  3.     driver.get("https://www.google.com")
  4.     assert "Google" in driver.title
  5.     driver.quit()
复制代码


4. 运行测试

使用以下命令运行测试用例:

  1. pytest test_example.py
复制代码


Pytest将自动发现并执行测试函数,并输出测试结果。

5. 实战实例

5.1 测试百度搜索功能

假设我们要测试百度的搜索功能,编写以下测试用例:

  1. import pytest
  2. from selenium import webdriver
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.common.keys import Keys

  5. def test_baidu_search():
  6.     driver = webdriver.Chrome()
  7.     driver.get("https://www.baidu.com")

  8.     search_box = driver.find_element(By.NAME, "wd")
  9.     search_box.send_keys("pytest selenium")
  10.     search_box.send_keys(Keys.RETURN)

  11.     assert "pytest selenium" in driver.page_source
  12.     driver.quit()
复制代码


5.2 添加更多断言

在实际测试中,可以添加更多断言来验证页面元素和行为:

  1. def test_baidu_search():
  2.     driver = webdriver.Chrome()
  3.     driver.get("https://www.baidu.com")

  4.     search_box = driver.find_element(By.NAME, "wd")
  5.     search_box.send_keys("pytest selenium")
  6.     search_box.send_keys(Keys.RETURN)

  7.     assert "pytest selenium" in driver.page_source
  8.     assert "百度一下,你就知道" in driver.page_source

  9.     results = driver.find_elements(By.CSS_SELECTOR, "h3.t")
  10.     assert len(results) > 0

  11.     driver.quit()
复制代码


5.3 使用Pytest Fixture

使用Pytest Fixture可以简化测试用例中的重复代码,例如浏览器的启动和关闭:

  1. @pytest.fixture
  2. def driver():
  3.     driver = webdriver.Chrome()
  4.     yield driver
  5.     driver.quit()

  6. def test_baidu_search(driver):
  7.     driver.get("https://www.baidu.com")

  8.     search_box = driver.find_element(By.NAME, "wd")
  9.     search_box.send_keys("pytest selenium")
  10.     search_box.send_keys(Keys.RETURN)

  11.     assert "pytest selenium" in driver.page_source
  12.     assert "百度一下,你就知道" in driver.page_source

  13.     results = driver.find_elements(By.CSS_SELECTOR, "h3.t")
  14.     assert len(results) > 0
复制代码


6. 总结

本文介绍了如何使用Pytest和Selenium进行UI自动化测试,从环境配置到编写和运行测试用例,展示了一个完整的实战实例。通过这种方式,开发者可以高效地进行Web应用程序的自动化测试,确保其在不同浏览器和操作系统上的稳定性和一致性。希望本文能为您在实际项目中提供有用的参考。









/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-3 17:01 , Processed in 0.083243 second(s), 23 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表