300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Pytest结合allure插件生成alluer测试报告【详细实战篇】

Pytest结合allure插件生成alluer测试报告【详细实战篇】

时间:2022-04-21 15:39:31

相关推荐

Pytest结合allure插件生成alluer测试报告【详细实战篇】

Pytest结合allure插件生成allure测试报告【详细实战篇】

一、Allure插件介绍二、Allure环境搭建与安装2.1 搭建步骤2.2 生成allure测试报告实例 三、Allure与Pytest集成3.1 allure特性-feature、storry、step3.2 allure特性—severity3.3 allure.attach()3.3.1 pytest + selenium + allure报告

一、Allure插件介绍

Allure框架是一个灵活轻量级多语言测试报告工具,它不仅可以以WEB的方式展示简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。

    Allure报告简化了常见缺陷的统计:失败的测试可以分为BUG和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。

二、Allure环境搭建与安装

2.1 搭建步骤

1、安装和配置JDK

a.下载jdk:/java/technologies/downloads/#java8b.安装jdk,傻瓜式安装即可c.配置环境变量JAVA_HOME:C:\Program Files\Java\jdk1.8.0_301 # 这个是JDK的安装路径PATH:%JAVA_HOME%\bin 或C:\Program Files\Java\jdk1.8.0_301\bin

2、安装Allure

a.安装pytest-allure库:pip install allure-pytestb.下载allure并解压下载地址:/allure-framework/allure2/releases/c.下载完成后解压到任意目录d.配置allure环境变量到PATH路径我的电脑-右击属性-高级系统设置-环境变量-编辑系统环境变量path-添加allure bin目录-点击确定e.验证cmd: allure

注意:

安装 allure 前提条件需要 Java1.8 的环境,因为allure 是基于 Java 的一个程序。

虽然allure已经解压并加到了环境变量中,但是执行allure --version会报下面错误

2.2 生成allure测试报告实例

import osimport pytestif __name__ == '__main__':pytest.main(['-vs', '--alluredir', './tmp'])os.system('allure generate ./tmp -o ./report --clean')

1 、执行用例生成测试数据 pytest.main([‘-vs’,‘[测试文件.py]’,‘–alluredir’,‘./temp_jsonreport’])

因为allure生成的报告是json格式的,需要再转化成html格式的,所以会自动生成一个temp_jsonreport文件

2、生成测试报告 os.system(‘allure generate ./tmp -o ./report --clean’)

解释:

generate:生成allure的HTML报告- -alluredir:是创建allure报告的路径-o:是执行-clean:是清除之前生成的报告

三、Allure与Pytest集成

allure除了支持Pytest自带的特性之外(fixture、parametrize、xfail、skip),自身也有非常强大的特性,下面来详细介绍。

3.1 allure特性-feature、storry、step

可以在报告中添加用例描述信息,比如:测试功能,子功能或场景,测试步骤以及测试附加信息

@allure.feature(“功能模块名称”):例如登录模块@allure.story(“子功能模块”):例如输入正确用户名密码登录成功@allure.step(“步骤”):测试步骤中的每个步骤,放在具体逻辑方法中 allure.stop(“步骤”):只能以装饰器的形式放在类或者方法上面with allure.step:可以放在测试用例方法里面 allure.attach(“具体文本信息”) 附加信息:数据、文本、图片、视频、网页等

import pytestimport allure@allure.feature("登录")class TestLogin:@allure.story("登录成功")def test_login_success(self):print("登录成功")@allure.story("密码错误")def test_login_failure(self):with allure.step("输入用户名"):print("输入用户名")with allure.step("输入密码"):print("输入密码")print("点击登录")with allure.step("登录失败"):assert '1' == 1print("登录失败")@allure.story("用户名密码错误")def test_login_failure_a(self):print("用户名或者密码错误,登录失败")@allure.feature("注册")class TestRegister:@allure.story("注册成功")def test_register_success(self):print("测试用例:注册成功")@allure.story("注册失败")def test_register_failure(self):with allure.step("输入用户名"):print("输入用户名")with allure.step("输入密码"):print("输入密码")with allure.step("再次输入密码"):print("再次输入密码")print("点击注册")with allure.step("注册失败"):assert 1 + 1 == 2print("注册失败")if __name__ == '__main__':pytest.main(['-vs', '--alluredir', './tmp'])os.system('allure generate ./tmp -o ./report --clean')

生成报告:

3.2 allure特性—severity

有时候在上线前,由于时间关系,我们只需要把重要模块测试一遍,在这样的场景下我们怎么实现呢?主要有三种方法:

1. 可以使用pytest.mark来标记用例

@pytest.mark.webtest # 添加标签 pytest -m "webtest"

2. 通过 allure.feature, allure.story来实现

pytest test_feature_story_step.py --allure-features "登录" //只运行登录模块pytest test_feature_story_step.py --allure-stories "登录成功" //只运行登录成功子模块

3. 通过 allure.severity按重要性级别来标记,有5种级别:

Blocker级别:阻塞Critical级别:严重Normal级别:正常Minor级别:不太重要Trivial级别:不重要

import allureimport pytestdef test_with_no_severity_label():pass@allure.severity(allure.severity_level.TRIVIAL)def test_with_trivial_severity():pass@allure.severity(allure.severity_level.NORMAL)def test_with_normal_severity():pass@allure.severity(allure.severity_level.NORMAL)class TestclassWithNormalSeverity(object):def test_inside_the_normalseverity_test_class(self):pass@allure.severity(allure.severity_level.CRITICAL)def test_inside_the_normal_severity_test_class_with_overriding_critical_severity(self):pass

pytest test_allure_severity.py --alluredir=./result/4 --allure-severities normal,criticalallure serve ./result/4

3.3 allure.attach()

可以在报告中附加文本、图片以及html网页,用来补充测试步骤或测试结果,比如错误截图或者关键步骤的截图。

import allureimport pytestdef test_attach_text():allure.attach("纯文本", attachment_type=allure.attachment_type.TEXT)def test_attach_html():allure.attach("<body>这是一段htmlbody块</body>", "html页面", attachment_type=allure.attachment_type.HTML)def test_attach_photo():allure.attach.file("test.jpg", name="图片", attachment_tye=allure.attachment_type.JPG)

3.3.1 pytest + selenium + allure报告

测试步骤:打开百度搜索关键词搜索结果截图,保存到报告中退出浏览器import allureimport pytestfrom selenium import webdriverimport time@allure.testcase("")@allure.feature("百度搜索")@pytest.mark.parametrize('test_data1', ['allure', 'pytest', 'unittest'])def test_steps_demo(test_data1):with allure.step("打开百度网页"):driver = webdriver.Chrome("D:/testing_tools/chromedriver85/chromedriver.exe")driver.get("")with allure.step("搜索关键词"):driver.find_element_by_id("kw").send_keys(test_data1)time.sleep(2)driver.find_element_by_id("su").click()time.sleep(2)with allure.step("保存图片"):driver.save_screenshot("./result/b.png")allure.attach.file("./result/b.png", attachment_type=allure.attachment_type.PNG)allure.attach('<head></head><body>首页</body>', 'Attach with HTML type', allure.attachment_type.HTML)with allure.step("退出浏览器"):driver.quit()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。