Python自动化测试框架Allure-pytest功能特性
Python自动化测试框架【Allure-pytest功能特性介绍】
目录:导读
前言
Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。
从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。
从管理者的角度来看,Allure提供了一个清晰的“大图”,其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。allure的模块化和可扩展性保证了您总是能够对某些东西进行微调,使Allure更适合您,那么今天我们就来说说如何使报告更加详细的显示我们需要的信息,以及allure与jenkins的集成
生成报告
pytest框架编写的项目如何生成测试报告,这里将不再讲解,具体过程可以参考我之前的文章,往上翻能找得到。
注意:python使用的allure插件为allure-pytest
测试代码
为了大家能够快速的认识allure的所有功能特性,附上完整的测试代码
conftest.py
test_allure_feature.py
test_allure_fixture.py
categories.json
environment.properties
run.py
目录结构
Allure特性
Environment
在Allure报告中添加环境信息,通过创建environment.properties或者environment.xml文件,并把文件存放到allure-results(这个目录是生成最后的html报告之前,生成依赖文件的目录)目录下
environment.properties
-
Browser=Chrome
-
Browser.Version=63.0
-
Stand=Production
-
ApiUrl=127.0.0.1/login
-
python.Version=3.6
或者
environment.xml
-
<environment>
-
<parameter>
-
<key>Browser</key>
-
<value>Chrome</value>
-
</parameter>
-
<parameter>
-
<key>Browser.Version</key>
-
<value>63.0</value>
-
</parameter>
-
<parameter>
-
<key>Stand</key>
-
<value>Production</value>
-
</parameter>
-
<parameter>
-
<key>ApiUrl</key>
-
<value>127.0.0.1/login</value>
-
</parameter>
-
<parameter>
-
<key>python.Version</key>
-
<value>3.6</value>
-
</parameter>
-
</environment>
执行run.py查看报告
Categories
测试报告默认统计两种类型的测试用例结果,失败的用例和故障测试用例,我们可以自定义添加用例的统计类型,同样需要在allure-results目录下新建categories.json文件
-
[
-
{
-
"name": "Ignored tests",
-
"matchedStatuses": ["skipped"]
-
},
-
{
-
"name": "Infrastructure problems",
-
"matchedStatuses": ["broken", "failed"],
-
"messageRegex": ".*bye-bye.*"
-
},
-
{
-
"name": "Outdated tests",
-
"matchedStatuses": ["broken"],
-
"traceRegex": ".*FileNotFoundException.*"
-
},
-
{
-
"name": "Product defects",
-
"matchedStatuses": ["failed"]
-
},
-
{
-
"name": "Test defects",
-
"matchedStatuses": ["broken"]
-
}
-
]
执行run.py查看报告
Fixtures and Finalizers
Fixtures和Finalizers是pytest在测试开始和测试结束调用的方法,allure会自动跟踪每一个fixture的调用,并且详细显示会调用哪些fixture和参数,而且会保留正确的调用顺数
测试代码
test_allure_html.py
-
def function_scope_step():
-
print("function_scope_step")
-
-
-
def class_scope_step():
-
print("class_scope_step")
-
-
-
def module_scope_step():
-
print("module_scope_step")
-
-
-
def session_scope_step():
-
print("session_scope_step")
-
-
-
def step_inside_test_body():
-
print("step_inside_test_body")
-
-
-
-
def function_scope_fixture_with_finalizer(request):
-
if request.param:
-
print('True')
-
else:
-
print('False')
-
-
def function_scope_finalizer():
-
function_scope_step()
-
-
request.addfinalizer(function_scope_finalizer)
-
-
-
-
def class_scope_fixture_with_finalizer(request):
-
def class_finalizer_fixture():
-
class_scope_step()
-
-
request.addfinalizer(class_finalizer_fixture)
-
-
-
-
def module_scope_fixture_with_finalizer(request):
-
def module_finalizer_fixture():
-
module_scope_step()
-
-
request.addfinalizer(module_finalizer_fixture)
-
-
-
-
def session_scope_fixture_with_finalizer(request):
-
def session_finalizer_fixture():
-
session_scope_step()
-
-
request.addfinalizer(session_finalizer_fixture)
-
-
-
class TestClass(object):
-
-
def test_with_scoped_finalizers(self,
-
function_scope_fixture_with_finalizer,
-
class_scope_fixture_with_finalizer,
-
module_scope_fixture_with_finalizer,
-
session_scope_fixture_with_finalizer):
-
step_inside_test_body()
执行run.py查看报告
@allure.step
pytest支持使用@allure.step修饰某些测试用例中需要的函数,使测试用例在allure报告中能够更加详细的显示测试过程
测试代码
test_allure_feature.py文件中修改如下代码
-
-
def input_username():
-
print("输入用户名")
-
-
-
-
def input_password():
-
print("输入密码")
执行run.py查看报告
conftest.py
@allure.step修饰的测试步骤还支持在conftest.py文件中定义,作为fixture的步骤,现在我们在项目目录下新建conftest.py文件,写入如下代码
conftest.py
-
-
def fixture_step():
-
pass
-
-
-
-
def init_url():
-
fixture_step()
-
yield True
test_allure_feature.py文件中添加如下用例
-
def test_init_url(self, init_url):
-
flag = init_url
-
assert flag == True
执行run.py查看报告
allure.attach
使用allure.attach可以给报告中添加文件,图片,log,html代码等等。 我们修改test_allure_feature.py中如下用例, 并在用例所在目录添加attach.png图片
-
def test_failed(self):
-
"""failed"""
-
try:
-
assert False
-
except AssertionError as e:
-
with open("attach.png", "rb") as f:
-
context = f.read()
-
allure.attach(context, "错误图片", attachment_type=allure.attachment_type.PNG)
-
raise e
执行run.py查看报告
@allure.description
如果你想在报告中展示测试用例的描述信息,那么你可以使用@allure.description(string)或者@allure.description_html(html代码)修饰你的测试用例,test_allure_feature.py文件修改如下代码
-
-
def test_failed(self):
-
"""你也可以在这里添加用例的描述信息,但是会被allure.description覆盖"""
-
try:
-
assert False
-
except AssertionError as e:
-
with open("attach.png", "rb") as f:
-
context = f.read()
-
allure.attach(context, "错误图片", attachment_type=allure.attachment_type.PNG)
-
raise e
执行run.py查看报告
@allure.title
使用allure.title(title)可以重命名测试用例在allure报告中的名称,test_allure_feature.py文件修改如下代码
-
-
-
def test_login_success(self, data):
-
"""测试登录成功"""
-
user = input_username(data["user"])
-
pwd = input_password(data["pwd"])
-
result = login(user, pwd)
-
assert result == data["expected"]
@allure.link
@allure.testcase
@allure.issue
这三种特性都可以给测试用例添加一个链接,test_allure_feature.py文件修改如下代码
-
-
def test_init_url(self, init_url):
-
flag = init_url
-
assert flag == True
-
-
-
-
def test_failed(self):
-
"""你也可以在这里添加用例的描述信息,但是会被allure.description覆盖"""
-
try:
-
assert False
-
except AssertionError as e:
-
with open("attach.png", "rb") as f:
-
context = f.read()
-
allure.attach(context, "错误图片", attachment_type=allure.attachment_type.PNG)
-
raise e
-
-
-
def test_broken(self):
-
"""broken"""
-
with open("broken.json", "r", encoding='utf8') as f:
-
f.read()
执行run.py查看报告
@allure.feature
@allure.story
feature和story被称为行为驱动标记,因为使用这个两个标记,通过报告可以更加清楚的掌握每个测试用例的功能和每个测试用例的测试场景
在test_allure_feature.py文件中的测试类使用@allure.feature修饰, 测试方法使用@allure.story修饰
执行run.py查看报告
以上两种标记不仅仅能够在测试报告中显示,而且还可以使用命令执行指定的测试模块或者场景
@allure.severity
此标记用来标识测试用例或者测试类的级别,分为blocker,critical,normal,minor,trivial5个级别,下面们把测试用例按级别标记,并查看一下测试报告
总结
写在最后
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~
你也可以加入下方的的群聊去和同行大神交流切磋
这篇好文章是转载于:编程之路
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 编程之路
- 本文地址: /boutique/detail/tanhhgbakg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13