pytest+allure

打印 上一主题 下一主题

主题 619|帖子 619|积分 1867

安装

下载:github win环境下载zip
环境变量:

pycharm:
        pip install allure-pytest
验证安装

生成结果:
  1. if __name__ == '__main__':
  2.     pytest.main(['-s','test_createTag2.py','--alluredir','result'])
复制代码
生成陈诉:
  1. allure generate ./result  -c -o ./report
复制代码
完整: 
  1. if __name__ == '__main__':
  2.     pytest.main(['-s','test_createTag2.py','--alluredir','./result'])
  3.     os.system('allure generate ./result -c -o ./report')
复制代码

添加装饰器/方法后才气在陈诉中显示相关结果

12、用法(二)之生成测试陈诉_哔哩哔哩_bilibili
使用装饰器


  • @allure.feature@allure.story: 这些装饰器用于描述测试的功能和详细的故事或场景。
    1. 1import allure
    2. 2
    3. 3@allure.feature('User Management')
    4. 4@allure.story('Login')
    5. 5def test_valid_login():
    6. 6    # 测试代码
    复制代码
  • @allure.severity: 设置测试案例的严重性等级。
    1. 1@allure.severity(allure.severity_level.CRITICAL)
    2. 2def test_critical_function():
    3. 3    # 测试代码
    复制代码
  • @allure.issue@allure.tms_link: 链接到问题跟踪系统中的问题或测试管理系统中的测试用例。
    1. 1@allure.issue('PROJECT-123')
    2. 2@allure.tms_link('TC-1234')
    3. 3def test_linked_case():
    4. 4    # 测试代码
    复制代码
在测试函数内使用allure方法


  • allure.attach(): 添加文本、图片、HTML或任何范例的附件到测试陈诉。
    1. 1def test_attach():
    2. 2    allure.attach('This is a text attachment', attachment_type=allure.attachment_type.TEXT)
    3. 3    # 测试代码
    复制代码
  • allure.step(): 创建可折叠的步骤,使测试陈诉更清楚。
    1. 1def test_with_steps():
    2. 2    with allure.step('Step 1'):
    3. 3        # 执行步骤1
    4. 4    with allure.step('Step 2'):
    5. 5        # 执行步骤2
    复制代码



Environment设置



  • Environment可以理解为环境变量;
  • 默认为空;
  • 可以自己设置。

  
 
创建environment.xml
  1. <environment>
  2. <parameter>
  3. <key>Browser</key>
  4. <value>Chrome</value>
  5. </parameter>
  6. <parameter>
  7. <key>Browser.Version</key>
  8. <value>111.0.5563.65</value>
  9. </parameter>
  10. <parameter>
  11. <key>Env</key>
  12. <value>Test</value>
  13. </parameter>
  14. <parameter>
  15. <key>IP</key>
  16. <value>192.168.1.133</value>
  17. </parameter>
  18. <parameter>
  19. <key>Allure-Pytest.Version</key>
  20. <value>2.8.12</value>
  21. </parameter>
  22. </environment>
复制代码
 
 

Categories设置

1.Categories即分类,

测试用例结果的分类
默认有两种分类:
# Product defects 产品缺陷(测试结果:failed)
# Test defects 测试缺陷(测试结果:error/broken)
可以自界说分类。
2. 设置方式

创建categories.json文件

  1. [
  2. {
  3. "name": "Passed tests",
  4. "matchedStatuses": ["passed"]
  5. },
  6. {
  7. "name": "Ignored tests",
  8. "matchedStatuses": ["skipped"]
  9. },
  10. {
  11. "name": "Infrastructure problems",
  12. "matchedStatuses": ["broken", "failed"],
  13. "messageRegex": ".*bye-bye.*"
  14. },
  15. {
  16. "name": "Outdated tests",
  17. "matchedStatuses": ["broken"],
  18. "traceRegex": ".*FileNotFoundException.*"
  19. },
  20. {
  21. "name": "Product defects",
  22. "matchedStatuses": ["failed"]
  23. },
  24. {
  25. "name": "Test defects",
  26. "matchedStatuses": ["broken"]
  27. }
  28. ]
复制代码
  参数分析:


  • name:分类名称
  • matchedStatuses:测试用例的运行状态,默认["failed", "broken", "passed", "skipped", "unknown"]
  • messageRegex:测试用例运行的错误信息,默认.* ,通过正则匹配
  • traceRegex:测试用例运行的错误堆栈信息,默认.* ,通过正则匹配
 
 

@pytest.mark.parametrize()

Allure可以或许很好的支持@pytest.mark.parametrize()举行参数化
 
 
with allure.step

@allure.step()标志函数使之成为测试步骤,而在测试函数/方法中,我们还可以通过with allure.step()的方式标志测试步骤。
它们之间的区别在于,@allure.step()用于标志通用函数,当这个被标志的函数被调用后,会插入步骤分析并展示在Allure陈诉中。
而with allure.step()则是将普通的代码标志为测试步骤,执行到这段代码时则会在Allure陈诉中展示步骤分析。
我们在上面代码的基础上,参加with allure.step(),示比方下:
  1. import pytest
  2. import allure
  3. import os
  4. class Counter:
  5.     def __init__(self):
  6.         self.value = 0
  7.     def increment(self):
  8.         self.value += 1
  9.     @allure.step("get value")
  10.     def get_value(self):
  11.         return self.value
  12. @pytest.fixture
  13. def counter(request):#request 参数不需要传值
  14.     #setup
  15.     with allure.step("with.allure.step"):
  16.         c = Counter()
  17.         print("setup_value:",c.value)
  18.     def reset_counter():
  19.         #还原数据
  20.         c.value = 0
  21.         print("teardown_value:",c.value)
  22.     request.addfinalizer(reset_counter)
  23.     return c
  24. def test_counter(counter):
  25.     print('test-start')
  26.     assert counter.get_value() == 0
  27.     counter.increment()
  28.     assert counter.get_value() == 1
  29.     counter.increment()
  30.     assert counter.get_value() == 2
  31. if __name__ == '__main__':
  32.     pytest.main(['-s','test_yield_finalizer.py','--alluredir','./result'])
  33.     os.system('allure generate ./result -c -o ./report')
复制代码



fixture

pytest的fixture函数可以实现setup、teardown的功能,而Allure会跟踪每个fixture的调用环境,详细显示调用了哪些fixture和参数以及调用顺序。
 
 
@pytest.mark.skip(reason='这个是跳过的原因!')

@pytest.mark.skipif(condition, reason='跳过的原因!')

@pytest.skip()在用例内部跳过测试用例

@pytest.mark.xfail(condition, reason=‘理由!’)



tags



其他:
https://blog.csdn.net/2301_81967703/article/details/138576981
allure.attach


allure.attach用于在测试陈诉中添加附件,增补测试结果。附件格式可以是txt、jpg等,附件内容通常是测试数据、截图等。
allure.attach提供了两种方法:allure.attach(),allure.attach.file()
allure.attach()
作用:在测试陈诉中生成指定内容、名称、范例的附件
语法:allure.attach(body, name=None, attachment_type=None, extension=None)
参数分析:
body,需要显示的内容,也可以理解为写入附件的内容
name,附件名称
attachment_type,附件范例,如csv、jpg、html 等,由allure.attachment_type提供
extension:附件扩展名,不常用
allure.attach.file()
作用:向测试用例中上传附件
语法:allure.attach.file(source, name=None, attachment_type=None, extension=None)
参数分析:source为文件路径,其他参数与allure.attach()参数一致。
在UI自动化测试中,会经常用到这个方法来上传用例执行的截图。
 
Note:
关于Flaky test 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表