【pytest + allure】生成测试报告

本文介绍了如何在Python中使用allure和pytest进行测试报告生成,包括下载和导入包、配置测试用例、生成测试报告,并展示了如何利用jsonpath解析JSON数据。还提供了在测试中使用allure动态功能和jsonpath进行断言验证的代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下载导入包

  • 1.在自己下载包环境下cmd指令:
pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple
  • 2.导入包
import allure,pytest

二、生成报告

  • 1…依次点击File–>Settings
    在这里插入图片描述
  • 2.找到Tools–>Python Integrated Tools–>点击下拉框选择Unittests
    在这里插入图片描述
  • 3.把命令写到main.py文件运行完测试用例的代码之后就自动生成报告了。
#生成测试数据
pytest.main(["-sq",__file__,'--alluredir=./report'])
#生成测试报告
os.system('allure generate ./report -O ./report-html --clean')

三、打开测试报告

1.用例执行完成后,在report文件夹下会有两个文件夹:report、allure-report。在html这个文件夹下,找到index.html文件,这个就是我们生成的测试报告,右键用浏览器打开就可以看到了。
在这里插入图片描述

四、完整代码例子

import allure,os,json,pytest
from jsonpath import jsonpath
from openpyxl import load_workbook,Workbook
import requests
from utils.MysqlUtilss import Mysql


mysql = Mysql()

wk = load_workbook(filename='D://接口测试用例.xlsx')
# 选择活动工作表或者指定的工作表
sheet = wk['登录退出']

data_test = list(sheet.iter_rows(values_only=True,min_row=2))

class Test():
    """项目名称【swsq后台】"""
    @pytest.mark.parametrize("index",list(range(len(data_test))))
    def test_admin_api(self, index):
        i = data_test[index]
        allure.dynamic.feature("项目名称【swsq】")
        allure.dynamic.title("{case_id}_{case_name}".format(case_id=i[0], case_name=i[4]))
        allure.dynamic.tag("P0")
        allure.dynamic.severity("critical")
        allure.dynamic.description("接口参数:{description}".format(description=str(i)))
        sql = str(i[6]).split("\n")
        url = i[7]+i[8]
        method = str(i[9])
        params = i[10]
        yq_result = str(i[11]).strip("\n").split("\n")
        if method == "GET":
            pass
        elif method == "POST":
            r = requests.post(url,json=json.loads(params))
            for l in sql:
                mysql.exec(l)
            for yq in yq_result:
                left = yq.split("==")[0]
                right = yq.split("==")[1]
                sj_result = jsonpath(r.json(), left)
                print(sj_result)
                print("*"*10)
                if right == "true":
                    with allure.step(f"断言验证【{left}】是否存在"):
                        # allure.attach("data",i)
                        assert sj_result
                elif "%" in right:
                    with allure.step(f"断言验证实际结果【{sj_result[0]}】是否包含【{right.strip('%')}】"):

                        assert right.strip("%") in sj_result[0]
                else:
                    with allure.step(f"断言验证实际结果【{sj_result[0]}】与预期结果【{right}】完全一致"):

                        assert sj_result[0] == right

if __name__ == '__main__':
    # 生成测试数据
    pytest.main(["-sq",__file__,'--alluredir=./report'])
    # 生成测试报告
    os.system('allure generate ./report -O ./report-html --clean')

1.allure.dynamic

写一个项目名:allure.dynamic.feature(“项目名称【swsq】”)
左侧用例名称:allure.dynamic.title(“{case_id}_{case_name}”.format(case_id=i[0], case_name=i[4]))
标签:allure.dynamic.tag(“P0”)
优先级:allure.dynamic.severity(“critical”)
描述:allure.dynamic.description(“接口参数:{description}”.format(description=str(i)))
执行:with allure.step(f"断言验证【{left}】是否存在")
在这里插入图片描述

2.jsonpath

from jsonpath import jsonpath

a={“data”:“123”,“params”:“456”}
b = jsonpath(a,“$.params”)
print(b)

打印:456

jsonpath用法:

  • 1.第一个参数:json数据
  • 2.第二个参数:$.键
<think>好的,我现在需要帮助用户了解如何使用pytestAllure和Selenium来编写UI自动化测试脚本。首先,我需要回顾用户提供的引用内容,确保回答准确并正确引用。 用户引用了四个资源,主要涉及环境搭建、框架工具、显式等待和PO模式。首先,我应该整理这些信息,分步骤说明如何创建测试脚本。 第一步,环境搭建。根据引用1和2,需要安装pytest、selenium、allure-pytest等库。需要确认安装命令是否正确,比如使用pip安装这些包。 第二步,创建测试用例。引用3提到了显式等待的使用,这部分很重要,需要在代码示例中展示如何利用WebDriverWait。同时,引用4提到了PO模式,但用户的问题可能不需要深入PO模式,但可以简要提及作为扩展。 第三步,添加Allure报告。需要说明如何在测试中使用装饰器,比如@allure.feature和@allure.story,以及生成报告的命令行步骤。 第四步,断言和测试逻辑。确保测试用例中有正确的断言,比如检查页面标题或元素是否存在。 另外,需要注意代码示例的正确性,比如WebDriverWait的使用,以及正确的导入语句。引用3中的代码示例有一个URL错误(www.TESTcsdn.com),可能需要指出或更正。 可能还需要提到目录结构,比如将测试用例放在tests目录下,使用pytest的默认发现规则。 最后,生成相关问题,涵盖环境搭建、元素定位、报告优化和PO模式等方面,帮助用户进一步学习。 需要确保回答结构清晰,分步骤说明,并正确引用来源。同时检查LaTeX格式是否符合要求,但用户的问题可能不涉及数学公式,所以可能不需要使用。但根据系统指令,所有行内数学表达式必须用$...$,但这里可能不涉及,所以重点放在代码块和引用上。</think>### 如何用 pytest + Allure + Selenium 编写 UI 自动化测试脚本 #### 1. 环境搭建 - **安装依赖库**: ```bash pip install pytest selenium allure-pytest webdriver-manager ``` 引用 pytest 作为测试框架,Selenium 用于浏览器操作,Allure 生成可视化报告[^1][^2]。 #### 2. 创建基础测试用例 ```python # test_login.py import allure import pytest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC @allure.feature("登录功能测试") class TestLogin: @pytest.fixture(scope="class") def setup(self): driver = webdriver.Chrome() driver.maximize_window() yield driver driver.quit() @allure.story("管理员登录成功场景") def test_admin_login(self, setup): driver = setup driver.get("https://example.com/admin/login") # 显式等待输入框加载完成[^3] username = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "username")) ) username.send_keys("admin") password = driver.find_element(By.ID, "password") password.send_keys("123456") driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click() # 断言登录后跳转到仪表盘页面 assert "dashboard" in driver.current_url allure.attach(driver.get_screenshot_as_png(), name="登录成功截图", attachment_type=allure.attachment_type.PNG) ``` #### 3. 配置 Allure 报告 - 在项目根目录创建 `pytest.ini`: ```ini [pytest] addopts = --alluredir=./allure-results ``` - 运行测试并生成报告: ```bash pytest test_login.py --alluredir=./allure-results allure serve ./allure-results ``` #### 4. 关键优化点 - **显式等待**:使用 `WebDriverWait` 确保元素加载完成,避免隐式等待导致的全局延迟。 - **PO模式**:可通过 `base_page.py` 封装公共方法(如元素定位、截图),提升代码复用性[^4]。 - **异常处理**:结合 `pytest.mark.xfail` 标记预期失败的用例。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值