Pytest+Allure进行自动化测试

本文详细介绍pytest自动化测试框架及Allure报告插件的安装与使用。从pytest和Allure的安装步骤开始,逐步深入到如何配置并运行测试用例,生成详细的测试报告。通过示例代码展示了如何进行HTTP请求的接口测试,包括GET、POST和DELETE方法,并使用Allure进行结果展示。

pytest 安装
pip install pytest
Allure插件安装
以前都写的是pytest-allure-adaptor
不过进官方主页说已经停更了
现在安装插件
pip install allure-pytest

生成html还需要安装
Allure安装
下载https://dl.bintray.com/qameta/generic/io/qameta/allure/
解压缩后添加PATH
依赖JAVA1.8 自行下载添加PATH

简单用法介绍

pytest .\test_1.py --alluredir ./report/
allure generate ./report/ -o ./html/ --clean
allure serve ./report/
详细说明
https://docs.qameta.io/allure/#_pytest
https://docs.pytest.org/en/latest/

#-*- coding:utf-8 -*-

__author__ = "Mason"
import allure
import pytest
import requests


# 基于pytest requests测试 接口
#('Feature1')  # feature定义功能
@allure.feature('feature1')
class TestRequestDemo:
    # 初始化
    url = "http://jsonplaceholder.typicode.com"
    session = requests.session()    

    # 测试获取所有用户信息接口  
    @allure.story('测试获取所有用户信息接口')
    def test_get_posts(self):
        r = self.session.get(self.url + "/posts")        
        # 断言状态码
        assert r.status_code == 200
        
        # 断言响应头信息
        assert r.headers["Content-Type"] == "application/json; charset=utf-8"

        # 断言用户总数
        assert len(r.json()) == 100
    
    # 测试获取指定用户信息接口
    @allure.story('获取指定用户信息接口')  # story定义用户场景
    def test_get_posts_by_id(self):
        r = self.session.get(self.url + "/posts/1")        
        
        # 断言状态码
        assert r.status_code == 200
        
        # 断言响应头信息
        assert r.headers["Content-Type"] == "application/json; charset=utf-8"

        # 验证用户id
        data = r.json()        
        assert data["userId"] == 1
        

    # 测试删除指定用户信息接口
    @allure.story('删除指定用户信息接口')  # story定义用户场景
    def test_delete_posts_by_id(self):
        r = self.session.delete(self.url + "/posts/1")        
    
        # 断言状态码
        assert r.status_code == 200
        
        # 断言响应头信息
        assert r.headers["Content-Type"] == "application/json; charset=utf-8"


        

pytest .\test_2.py --alluredir ./report/ --allure-features feature1 --allure-stories 测试获取所有用户信息接口
allure generate ./report/ -o ./html/ --clean
生成结果

### 搭建基于 Selenium、PytestAllure自动化测试框架 搭建一个基于 **Selenium**、**Pytest** 和 **Allure** 的自动化测试框架,可以有效提升 UI 自动化测试的效率和可维护性。以下是详细的实现步骤: #### 1. 环境准备 确保系统中已安装以下依赖: - Python(推荐 3.7 及以上版本) - Selenium(用于浏览器自动化) - Pytest(用于测试框架管理) - Allure-pytest(用于生成测试报告) - WebDriver(如 ChromeDriver、GeckoDriver 等) 可以通过以下命令安装相关库: ```bash pip install selenium pytest allure-pytest ``` 下载并配置相应的浏览器驱动(如 ChromeDriver),确保其路径已添加到系统环境变量中。 #### 2. 项目结构设计 合理的项目结构有助于提高可维护性。以下是一个推荐的目录结构: ``` project/ │ ├── tests/ # 测试用例目录 │ └── test_login.py # 示例测试用例 │ ├── pages/ # Page Object 模式页面类 │ └── login_page.py # 登录页面对象 │ ├── utils/ # 工具类 │ └── driver_utils.py # 浏览器驱动工具 │ ├── config/ # 配置文件 │ └── config.yaml # 配置信息 │ ├── reports/ # Allure 测试报告输出目录 │ ├── conftest.py # Pytest 全局 fixture │ └── pytest.ini # Pytest 配置文件 ``` #### 3. 配置 Pytest 在项目根目录下创建 `pytest.ini` 文件,配置 Allure 输出路径和测试用例搜索路径: ```ini [pytest] addopts = --alluredir=./reports --clean-alluredir testpaths = tests ``` #### 4. 使用 Page Object 模式 Page Object 模式可以提高代码的可读性和可维护性。例如,定义一个登录页面类: ```python # pages/login_page.py from selenium.webdriver.common.by import By class LoginPage: def __init__(self, driver): self.driver = driver def enter_username(self, username): self.driver.find_element(By.ID, "username").send_keys(username) def enter_password(self, password): self.driver.find_element(By.ID, "password").send_keys(password) def click_login(self): self.driver.find_element(By.ID, "login-btn").click() ``` #### 5. 编写测试用例 使用 Pytest 编写测试用例,并结合 Selenium 进行浏览器操作: ```python # tests/test_login.py from pages.login_page import LoginPage from utils.driver_utils import get_driver def test_login(): driver = get_driver() login_page = LoginPage(driver) login_page.enter_username("testuser") login_page.enter_password("password123") login_page.click_login() assert "dashboard" in driver.current_url driver.quit() ``` #### 6. 配置 Allure 报告 Allure 提供了丰富的测试报告功能。运行测试后,使用以下命令生成报告: ```bash allure generate ./reports -o ./allure-report --clean ``` 可以在浏览器中打开 `allure-report/index.html` 查看详细的测试报告。 #### 7. 使用 Conftest.py 管理全局 Fixture 在 `conftest.py` 中定义全局 fixture,例如自动启动和关闭浏览器: ```python # conftest.py import pytest from utils.driver_utils import get_driver @pytest.fixture(scope="function") def driver(): driver = get_driver() yield driver driver.quit() ``` #### 8. 运行测试 使用以下命令运行测试并生成 Allure 报告: ```bash pytest tests/test_login.py allure serve reports ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

充值内卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值