2018做网站 工具,盘石做的网站,wordpress 注释问题,没广告的视频播放器app亲爱的小伙伴们#xff0c;由于微信公众号改版#xff0c;打乱了发布时间#xff0c;为了保证大家可以及时收到文章的推送#xff0c;可以点击上方蓝字关注测试工程师成长之路#xff0c;并设为星标就可以第一时间收到推送哦#xff01; 一.使用 Allure2 运行方式-Python… 亲爱的小伙伴们由于微信公众号改版打乱了发布时间为了保证大家可以及时收到文章的推送可以点击上方蓝字关注测试工程师成长之路并设为星标就可以第一时间收到推送哦 一.使用 Allure2 运行方式-Python
# --alluredir 参数生成测试报告。
# 在测试执行期间收集结果
pytest [测试用例/模块/包] --alluredir./result/ (—alluredir这个选项 用于指定存储测试结果的路径)# 生成在线的测试报告
allure serve ./result二.使用 Allure2 运行方式-Java
1.使用 allure:report 参数生成测试报告
# 在测试执行期间收集结果
# mvn命令行使用 maven插件安装
mvn clean test allure:report# 生成在线的测试报告
# mvn 直接找target/allure-results目录
mvn allure:serve 2.运行mvn命令对应没有在target下面生成allure-results目录。在src/test/resources路径下配置allure配置文件allure.properties指名allure报告生成路径。
allure.results.directorytarget/allure-resultsa3.运行mvn命令一直卡在下载中解决方法
①在项目下创建.allure文件夹。
②下载allure解压到.allure文件夹下。
三.生成测试报告
1.生成测试报告需要使用命令行工具allure
2.命令格式allure [option] [command] [command options]
# 步骤一在测试执行期间收集结果
# —alluredir这个选项 用于指定存储测试结果的路径
pytest [测试文件] -s –q --alluredir./result/
# 如果要清除已经生成的报告的历史记录可以添加参数--clean-alluredir
pytest [测试文件] -s –q --alluredir./result/ --clean-alluredir
# 步骤二查看测试报告注意这里的serve书写
allure serve ./result/3.Allure报告生成的两种方式
方式一在线报告会直接打开默认浏览器展示当前报告。
# 方式一测试完成后查看实际报告在线查看报告会直接打开默认浏览器展示当前报告。
allure serve ./result/方式二静态资源文件报告(带 index.html、css、js等文件)需要将报告布署到 web服务器上。
a.应用场景如果希望随时打开报告可以生成一个静态资源文件报告将这个报告布署到 web 服务器上启动 web 服务即可随时随地打开报告。
b.解决方案使用allure generate 生成带有 index.html 的结果报告。这种方式需要两个步骤第一步生成报告。第二步打开报告。# 生成报告
allure generate ./result
# 打开报告
allure open ./report/4.常用参数
①allure generate 可以指定输出路径也可以清理上次的报告记录。
②-o / –output 输出报告的路径。
③-c / –clean 如果报告路径重复。
④allure open 打开报告。
⑤-h / –host 主机 IP 地址此主机将用于启动报表的 web 服务器。
⑥-p / –port 主机端口此端口将用于启动报表的 web 服务器默认值0。# 生成报告指定输出路径清理报告。
allure generate ./result -o ./report --clean# 打开报告指定IP地址和端口。
allure open -h 127.0.0.1 -p 8883 ./report/四.Allure2 报告中添加用例标题
通过使用装饰器allure.title可以为测试用例自定义一个可阅读性的标题。allure.title的三种使用方式如下
方式一直接使用装饰器allure.title 为测试用例自定义标题。
import allure
import pytestallure.title(自定义测试用例标题)
def test_with_title():assert True方式二allure.title支持通过占位符的方式传递参数可以实现测试用例标题参数化动态生成测试用例标题。
import allure
import pytestallure.title(参数化用例标题参数一{param1} 参数二 {param2})
pytest.mark.parametrize(param1, param2, expected, [(1, 1, 2),(0.1, 0.3, 0.4)
])
def test_with_parametrize_title(param1, param2, expected):assert param1 param2 expected方式三allure.dynamic.title 动态更新测试用例标题。
allure.title(原始标题)
def test_with_dynamic_title():assert Trueallure.dynamic.title(更改后的新标题)五.Allure2报告中添加用例步骤
方法一使用装饰器定义一个测试步骤在测试用例中使用。
# 方法一使用装饰器定义一个测试步骤在测试用例中使用
import allure
import pytest# 定义测试步骤simple_step1
allure.step
def simple_step1(step_param1, step_param2 None):定义一个测试步骤print(f步骤1打开页面参数1: {step_param1}, 参数2{step_param2})# 定义测试步骤simple_step2
allure.step
def simple_step2(step_param):定义一个测试步骤print(f步骤2完成搜索 {step_param} 功能)pytest.mark.parametrize(param1, [pytest, allure], ids[search pytest, search allure])
def test_parameterize_with_id(param1):simple_step2(param1) # 调用步骤二pytest.mark.parametrize(param1, [True, False])
pytest.mark.parametrize(param2, [value 1, value 2])
def test_parametrize_with_two_parameters(param1, param2):simple_step1(param1, param2) # 调用步骤一pytest.mark.parametrize(param2, [pytest, unittest])
pytest.mark.parametrize(param1,param3, [[1,2]])
def test_parameterize_with_uneven_value_sets(param1, param2, param3):simple_step1(param1, param3) # 调用步骤一simple_step2(param2) # 调用步骤二方法二使用 with allure.step() 添加测试步骤。
# 方法二使用 with allure.step() 添加测试步骤
allure.title(搜索用例)
def test_step_in_method():with allure.step(测试步骤一打开页面):print(操作 a)print(操作 b)with allure.step(测试步骤二搜索):print(搜索操作 )with allure.step(测试步骤三断言):assert True六.Allure2报告中添加用例链接
应用场景将报告与bug管理系统或测试用例管理系统集成可以添加链接装饰器allure.link、allure.issue和allure.testcase。
1.allure.link(url, name) 添加一个普通的 link 链接。
2.allure.testcase(url, name) 添加一个用例管理系统链接。
3.allure.issue(url, name)添加 bug 管理系统# 格式1添加一个普通的link 链接
allure.link(https://ceshiren.com/t/topic/15860)
def test_with_link():pass# 格式1添加一个普通的link 链接添加链接名称
allure.link(https://ceshiren.com/t/topic/15860, name这是用例链接地址)
def test_with_named_link():pass# 格式2添加用例管理系统链接
TEST_CASE_LINK https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637allure.testcase(TEST_CASE_LINK, 用例管理系统)
def test_with_testcase_link():pass# 格式3添加bug管理系统链接
# 这个装饰器在展示的时候会带 bug 图标的链接。可以在运行时通过参数 --allure-link-pattern 指定一个模板链接以便将其与提供的问题链接类型链接模板一起使用。执行命令需要指定模板链接
--allure-link-patternissue:https://abc.com/t/topic/{}
allure.issue(15860, bug管理系统)
def test_with_issue():pass七.Allure2报告中添加用例分类
1.Allure分类
(1)应用场景可以为项目以及项目下的不同模块对用例进行分类管理。也可以运行某个类别下的用例。
(2)报告展示类别会展示在测试报告的Behaviors栏目下。
(3)Allure提供了三个装饰器 allure.epic敏捷里面的概念定义史诗往下是 feature。 allure.feature功能点的描述理解成模块往下是 story。 allure.story故事 story 是 feature 的子集。
2.Allure分类 - epic 场景希望在测试报告中看到用例所在的项目需要用到 epic相当于定义一个项目的需求由于粒度比较大在epic下面还要定义略小粒度的用户故事。 装饰器allure.epic
import allureallure.epic(需求1)
class TestEpic:def test_case1(self):print(用例1)def test_case2(self):print(用例2)def test_case3(self):print(用例3)3.Allure分类 - feature/story 场景: 希望在报告中看到测试功能子功能或场景。 装饰器: allure.Feature、allure.story
import allureallure.epic(需求1)
allure.feature(功能模块1)
class TestEpic:allure.story(子功能1)allure.title(用例1)def test_case1(self):print(用例1)allure.story(子功能2)allure.title(用例2)def test_case2(self):print(用例2)allure.story(子功能2)allure.title(用例3)def test_case3(self):print(用例3)allure.story(子功能1)allure.title(用例4)def test_case4(self):print(用例4)4.Allure运行feature/story
# allure相关的命令查看
pytest --help|grep allure#通过指定命令行参数运行 epic/feature/story 相关的用例
pytest 文件名
--allure-epicsEPICS_SET --allure-featuresFEATURES_SET --allure-storiesSTORIES_SET# 只运行 epic 名为 需求1 的测试用例
pytest --alluredir ./results --clean-alluredir --allure-epics需求1# 只运行 feature 名为 功能模块2 的测试用例
pytest --alluredir ./results --clean-alluredir --allure-features功能模块2# 只运行 story 名为 子功能1 的测试用例
pytest --alluredir ./results --clean-alluredir --allure-stories子功能1# 运行 story 名为 子功能1和子功能2 的测试用例
pytest --alluredir ./results --clean-alluredir --allure-stories子功能1,子功能2# 运行 feature story 的用例取并集
pytest --alluredir ./results --clean-alluredir --allure-features功能模块1 --allure-stories子功能1,子功能2
Allure epic/feature/story 的关系5.总结 epic敏捷里面的概念用来定义史诗相当于定义一个项目。 feature相当于一个功能模块相当于 testsuite可以管理很多个子分支 story。 story相当于对应这个功能或者模块下的不同场景分支功能。 epic 与 feature、feature 与 story 类似于父子关系。
八.Allure2 报告中添加用例描述
1.应用场景Allure 支持往测试报告中对测试用例添加非常详细的描述语用来描述测试用例详情。
2.Allure添加描述的四种方式
方式一使用装饰器 allure.description() 传递一个字符串参数来描述测试用例。
allure.description(
多行描述语br/
这是通过传递字符串参数的方式添加的一段描述语br/
使用的是装饰器 allure.description
)
def test_description_provide_string():assert True方式二使用装饰器 allure.description_html 传递一段 HTML 文本来描述测试用例。
allure.description_html(html代码块)
def test_description_privide_html():assert True方式三直接在测试用例方法中通过编写文档注释的方法来添加描述。
def test_description_docstring():直接在测试用例方法中通过编写文档注释的方法来添加描述。:return:assert True方式四用例代码内部动态添加描述信息。
import allureallure.description(这个描述将被替换)
def test_dynamic_description():assert 42 int(6 * 7)allure.dynamic.description(这是最终的描述信息)# allure.dynamic.description_html( html 代码块 )九.Allure2报告中添加用例优先级
1.应用场景用例执行时希望按照严重级别执行测试用例。
2.解决可以为每个用例添加一个等级的装饰器用法allure.severity。
3.Allure 对严重级别的定义分为 5 个级别 Blocker级别中断缺陷客户端程序无响应无法执行下一步操作。 Critical级别临界缺陷 功能点缺失。 Normal级别普通缺陷数值计算错误。 Minor级别次要缺陷界面错误与UI需求不符。 Trivial级别轻微缺陷必输项无提示或者提示不规范。
4.使用装饰器添加用例方法/类的级别。类上添加的级别对类中没有添加级别的方法生效。
#运行时添加命令行参数 --allure-severities
pytest --alluredir ./results --clean-alluredir --allure-severities normal,blockerimport allure
def test_with_no_severity_label():passallure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():passallure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():passallure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):def test_inside_the_normal(self):passallure.severity(allure.severity_level.CRITICAL)def test_critical_severity(self):passallure.severity(allure.severity_level.BLOCKER)def test_blocker_severity(self):pass十.Allure2报告中添加用例支持tags标签
1.Allure2 添加用例标签-xfail、skipif
import pytest
# 用法使用装饰器 pytest.xfail()、pytest.skipif()
# 当用例通过时标注为 xfail
pytest.mark.xfail(conditionlambda: True, reason这是一个预期失败的用例)
def test_xfail_expected_failure():this test is a xfail that will be marked as expected failureassert False# 当用例通过时标注为 xpass
pytest.mark.xfail
def test_xfail_unexpected_pass():this test is a xfail that will be marked as unexpected successassert True# 跳过用例
pytest.mark.skipif(2 2 ! 5, reason当条件触发时这个用例被跳过 pytest.mark.skipif)
def test_skip_by_triggered_condition():pass2.Allure2 添加用例标签-fixture
应用场景fixture 和 finalizer 是分别在测试开始之前和测试结束之后由 Pytest 调用的实用程序函数。Allure 跟踪每个 fixture 的调用并详细显示调用了哪些方法以及哪些参数从而保持了调用的正确顺序。
import pytestpytest.fixture()
def func(request):print(这是一个fixture方法)# 定义一个终结器teardown动作放在终结器中def over():print(session级别终结器)request.addfinalizer(over)class TestClass(object):def test_with_scoped_finalizers(self,func):print(测试用例)十一.Allure2报告中支持记录失败重试功能
1.Allure 可以收集用例运行期间重试的用例的结果以及这段时间重试的历史记录。
2.重试功能可以使用 pytest 相关的插件例如 pytest-rerunfailures。重试的结果信息会展示在详情页面的Retries 选项卡中。
import pytest
pytest.mark.flaky(reruns2, reruns_delay2) # reruns重试次数reruns_delay每次重试间隔时间秒
def test_rerun2():assert False十二.Allure2 报告中添加附件-图片
1.应用场景在做 UI 自动化测试时可以将页面截图或者出错的页面进行截图将截图添加到测试报告中展示辅助定位问题。
2.解决方案 Python使用 allure.attach 或者 allure.attach.file() 添加图片。 Java直接通过注解或调用方法添加。
3.python方法一
语法allure.attach.file(source, name, attachment_type, extension)
参数解释①source文件路径相当于传一个文件。②name附件名字。③attachment_type附件类型是 allure.attachment_type 其中的一种(支持 PNG、JPG、BMP、GIF 等)。④extension附件的扩展名。import allure
class TestWithAttach:def test_pic(self):allure.attach.file(pic.png, name图片, attachment_typeallure.attachment_type.PNG, extensionpng)4.python方法二
语法allure.attach(body, nameNone, attachment_typeNone, extensionNone)
参数解释①body要写入附件的内容②name附件名字。③attachment_type附件类型是 allure.attachment_type 其中的一种(支持 PNG、JPG、BMP、GIF 等)。④extension附件的扩展名。5.裂图的原因以及解决办法 图片上传过程中出现了网络中断或者传输过程中出现了错误。 解决方案重新上传图片。 Allure 报告中的图片大小超过了 Allure 的限制。 解决方案调整图片大小。 图片本身存在问题。 解决方案检查图片格式和文件本身。
十三.Allure2报告中添加附件-日志
1.应用场景报告中添加详细的日志信息有助于分析定位问题。 2.解决方案使用 python 自带的 logging 模块生成日志日志会自动添加到测试报告中。日志配置在测试报告中使用 logger 对象生成对应级别的日志。
# 创建一个日志模块 log_util.py
import logging
import osfrom logging.handlers import RotatingFileHandler# 绑定绑定句柄到logger对象
logger logging.getLogger(__name__)
# 获取当前工具文件所在的路径
root_path os.path.dirname(os.path.abspath(__file__))
# 拼接当前要输出日志的路径
log_dir_path os.sep.join([root_path, f/logs])
if not os.path.isdir(log_dir_path):os.mkdir(log_dir_path)
# 创建日志记录器指明日志保存路径,每个日志的大小保存日志的上限
file_log_handler RotatingFileHandler(os.sep.join([log_dir_path, log.log]), maxBytes1024 * 1024, backupCount10 , encodingutf-8)
# 设置日志的格式
date_string %Y-%m-%d %H:%M:%S
formatter logging.Formatter([%(asctime)s] [%(levelname)s] [%(filename)s]/[line: %(lineno)d]/[%(funcName)s] %(message)s , date_string)
# 日志输出到控制台的句柄
stream_handler logging.StreamHandler()
# 将日志记录器指定日志的格式
file_log_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)
# 为全局的日志工具对象添加日志记录器
# 绑定绑定句柄到logger对象
logger.addHandler(stream_handler)
logger.addHandler(file_log_handler)
# 设置日志输出级别
logger.setLevel(levellogging.INFO)代码输出到用例详情页面。运行用例命令pytest --alluredir ./results --clean-alluredir注意不要加-vs。
import allure
from pytest_test.log_util import loggerallure.feature(功能模块2)
class TestWithLogger:allure.story(子功能1)allure.title(用例1)def test_case1(self):logger.info(用例1的 info 级别的日志)logger.debug(用例1的 debug 级别的日志)logger.warning(用例1的 warning 级别的日志)logger.error(用例1的 error 级别的日志)logger.fatal(用例1的 fatal 级别的日志)日志展示在 Test body 标签下标签下可展示多个子标签代表不同的日志输出渠道 log 子标签展示日志信息。 stdout 子标签展示 print 信息。 stderr 子标签展示终端输出的信息。
禁用日志可以使用命令行参数控制 --allure-no-capture
pytest --alluredir ./results --clean-alluredir --allure-no-capturepublic void exampleTest() {byte[] contents Files.readAllBytes(Paths.get(a.txt));attachTextFile(byte[]的文件, 描述信息);}Attachment(value {attachmentName}, type text/plain)
public byte[] attachTextFile(byte[] contents, String attachmentName) {return contents;
}调用方法添加。
--String类型添加。 日志文件为String类型
Allure.addAttachment(描述信息, text/plain, 文件读取为String,txt);
--InputStream类型添加。日志文件为InputStream流
Allure.addAttachment(描述信息, text/plain, Files.newInputStream(文件Path), txt);十四.Allure2报告中添加附件-html
1.应用场景可以定制测试报告页面效果可以将 HTML 类型的附件显示在报告页面上。
2.解决方案使用 allure.attach() 添加 html 代码。
语法allure.attach(body, name, attachment_type, extension)
参数解释body要写入附件的内容(HTML 代码块)。name附件名字。attachment_type附件类型是 allure.attachment_type 其中的一种。extension附件的扩展名。import allure
class TestWithAttach:def test_html(self):allure.attach(head/headbody a page /body,附件是HTML类型,allure.attachment_type.HTML)def test_html_part(self):allure.attach(html代码块,附件是HTML类型,allure.attachment_type.HTML)十五.Allure2 报告中添加附件-视频
使用 allure.attach.file() 添加视频。
语法allure.attach.file(source, name, attachment_type, extension)
参数解释source文件路径相当于传一个文件。name附件名字。attachment_type附件类型是 allure.attachment_type 其中的一种。extension附件的扩展名。import allureclass TestWithAttach:def test_video(self):allure.attach.file(xxx.mp4, name视频, attachment_typeallure.attachment_type.MP4, extensionmp4)十六.Allure2 报告定制
应用场景针对不同的项目可能需要对测试报告展示的效果进行定制比如修改页面的 logo、修改项目的标题或者添加一些定制的功能等等。
1.修改页面 Logo
(1)修改allure.yml文件在后面添加 logo 插件custom-logo-plugin在 allure 安装路径下/allure-2.21.0/config/allure.yml可以通过 where allure 或者which allure查看 allure 安装路径
(2)编辑 styles.css 文件配置 logo 图片(logo图片可以提前准备好放在/custom-logo-plugin/static中)
/* 打开 styles.css 文件
目录在安装allure时解压的路径/xxx/allure-2.21.0/plugins/custom-logo-plugin/static/styles.css
将内容修改图片logo和相应的大小*/.side-nav__brand {background: url(logo.jpeg) no-repeat left center !important;margin-left: 10px;height: 40px;background-size: contain !important;
}2.修改页面标题编辑 styles.css 文件添加修改标题对应的代码。
/* 去掉图片后边 allure 文本 */
.side-nav__brand-text {display: none;
}/* 设置logo 后面的字体样式与字体大小 */
.side-nav__brand:after {content: 测试报告;margin-left: 18px;height: 20px;font-family: Arial;font-size: 13px;
}来源https://juejin.cn/post/7232696604045803580
作者测试人•END•
记得拉至文末为糖糖点个“在看”
如有任何疑问点击添加【个人微信】咨询
喜欢这篇文章欢迎转发、分享~ 接口自动化测试系列 UI自动化测试系列 自动化测试系列 抓包工具系列 功能测试系列 面试宝典系列 测试工具系列 团队管理系列 性能测试系列