pytest结合allure生成html测试报告(step、story、severity、screenshot)

allure介绍以及环境

  1. allure是一个生成HTML测试报告的工具包。
  2. 依赖java环境,所以必须安装jdk和配置环境变量
  3. 生成html报告需要下载allure,解压即可不需要安装,但是需要配置环境变量
    • 下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/,需要匹配python中的allure-pytest版本
    • 下载后不需要安装,直接解压放到相应目录
    • 环境变量配置:path中新增变量,把allure的bin目录放到path中。
  4. python环境:需要安装pip install allure-pytest
  5. python环境中,安装pytest

使用总结

  1. 配置文件修改,使用过allure生成测试报告
  2. 运行时依然执行pytest命令,但是执行后生成json文件
  3. 使用命令生成html报告:allure generate report -o report/html --clean
    • -o 指代output输出报告的路径
    • --clean,指代清除以前生成报告,如果不想清楚需要留存历史数据,此命令可不加
  4. 添加测试步骤:@allure.step(title="输入企业号")---此代码在操作层方法上。所以需要修改page类
python 复制代码
#操作层增加测试步骤
class LoginHandle(BaseHandle):
    def __init__(self):
        self.login_page=LoginPage() #实例化元素对象类
    #定义账号密码输入框
    @allure.step(title="输入企业号")
    def input_enterprise(self,enterprise):
        #调用基类方法input_text(element,text),两个变量元素和输入文本
        self.input_text(self.login_page.find_enterprise(),enterprise)
    @allure.step(title="输入账号")
    def input_account(self, account):
        self.input_text(self.login_page.find_account(),account)
    @allure.step(title="输入密码")
    def input_psd(self, psd):
        self.input_text(self.login_page.find_psd(),psd)
    # @allure.step(title="点击登录")
    def click_login_btn(self):
        self.login_page.find_login_btn().click()
  1. 添加测试截图:此代码一般都在测试用例中,如allure.attach(UtilsDriver.get_driver().get_screenshot_as_png(),"登录成功",allure.attachment_type.PNG),需要先获取driver再使用driver调用截图方法,截图描述、获得png图片;
  2. 添加测试用例级别:此代码一般在用例上方标记:如@allure.severity(allure.severity_level.BLOCKER)
python 复制代码
@allure.story("登录模块")  #增加用例模块归属,使用story方法
class TestLogin:
    #初始化。类级别的
    def setup_class(self):
        self.login_proxy=LoginProxy()
        self.home_proxy=HomeProxy()
        self.dig_proxy=DigitalProxy()
    #结束销毁,类级别,统一销毁
    def teardown_class(self):
        UtilsDriver.quit_driver()  #调用工具类中的关闭webdriver对象
    #方法三:参数化使用函数
    @pytest.mark.parametrize("enterprise,account,psd,expect",read_params_data("login_data.json", "login_success", "enterprise,account,psd,expect"))
    #增加用例级别
    @allure.severity(allure.severity_level.BLOCKER)
    def test01_login(self,enterprise,account,psd,expect):
        # 调用登陆业务进入首页,参数有账号密码
        self.login_proxy.go_home_page(enterprise,account,psd)
        #登录业务完成后,使用allure截图,须先获取driver使用driver调用截图方法,截图描述、获得png图片
        allure.attach(UtilsDriver.get_driver().get_screenshot_as_png(),"登录成功",allure.attachment_type.PNG)
        username = self.home_proxy.get_username_msg() #获取登陆者姓名
        #断言
        assert expect == username
        logging.info("登陆者姓名:{}".format(username))
        #日志记录测试用例数据
        logging.info("测试用例数据:企业:{},账号:{},预期结果:{}".format(enterprise,account,expect))
  1. 测试结果如下:


相关推荐
星月日1 小时前
前端上手后端起手式
前端·后端
掘金挖土1 小时前
前端手摸手跑路之 AI 应用开发(一)
前端·后端
用户298698530141 小时前
在 React 中实现 RTF 与 PDF、HTML 的文档转换实践
javascript·react.js·html
咖啡无伴侣1 小时前
3. 从零搭建企业级 Monorepo 工程化模板:集成 Husky 9 + lint-staged
前端·架构
MetaLite1 小时前
Java通用枚举驱动下拉框-元数据接口与前端契约
java·前端·状态模式
Json____1 小时前
基于 Node + Vue3 的选课管理系统:从教务业务到全栈实践
前端·node·毕设·wwwoop.com
创新技术阁1 小时前
FastapiAdmin 定时任务实现原理与新建任务实操指南
前端·后端·fastapi
拜托多多指教1 小时前
【Pytest框架学习】分层架构
python·pytest
3A Cloud1 小时前
Huashu Design:把 AI Agent 变成一间以 HTML 为画布的设计工作室
前端·人工智能·html