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. 测试结果如下:


相关推荐
Java后端的Ai之路20 小时前
06-React-Props
前端·react.js·前端框架
Flynt21 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
Csvn21 小时前
渲染管线
前端
程序员大阳21 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角
志尊宝21 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金1 天前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
柳杉1 天前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化
IMPYLH1 天前
HTML 的 <wbr> 元素
前端·html
Dovis(誓平步青云)1 天前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
IT_陈寒1 天前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端