来自云龙湖轮廓分明的月亮 发表于 2024-7-25 15:19:41

pytest+allure

安装

下载:github win环境下载zip
环境变量:
https://i-blog.csdnimg.cn/direct/3cb35277419b4f4788fc0030a68bddd5.png
pycharm:
        pip install allure-pytest
验证安装
https://i-blog.csdnimg.cn/direct/429066512016466b85a7c88565e7ce38.png
生成结果:

if __name__ == '__main__':
    pytest.main(['-s','test_createTag2.py','--alluredir','result']) 生成陈诉:
allure generate ./result-c -o ./report 完整: 
if __name__ == '__main__':
    pytest.main(['-s','test_createTag2.py','--alluredir','./result'])
    os.system('allure generate ./result -c -o ./report') https://i-blog.csdnimg.cn/direct/09e7b33bec68446c95471b5d8d11c4d3.png
添加装饰器/方法后才气在陈诉中显示相关结果

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


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


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



Environment设置



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

  https://i-blog.csdnimg.cn/direct/8882329bc2d24797b406c3afba4ce5b4.png 
创建environment.xml
<environment>

<parameter>

<key>Browser</key>

<value>Chrome</value>

</parameter>

<parameter>

<key>Browser.Version</key>

<value>111.0.5563.65</value>

</parameter>

<parameter>

<key>Env</key>

<value>Test</value>

</parameter>

<parameter>

<key>IP</key>

<value>192.168.1.133</value>

</parameter>

<parameter>

<key>Allure-Pytest.Version</key>

<value>2.8.12</value>

</parameter>

</environment>
 https://i-blog.csdnimg.cn/direct/0892e7041a104739be7dd7cf70ec77ff.png 

Categories设置

1.Categories即分类,

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

创建categories.json文件
https://i-blog.csdnimg.cn/direct/34056d6225894b6a97541ace48f41ffc.png
[

{

"name": "Passed tests",

"matchedStatuses": ["passed"]

},

{

"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"]

}

]
  参数分析:


[*]name:分类名称
[*]matchedStatuses:测试用例的运行状态,默认["failed", "broken", "passed", "skipped", "unknown"]
[*]messageRegex:测试用例运行的错误信息,默认.* ,通过正则匹配
[*]traceRegex:测试用例运行的错误堆栈信息,默认.* ,通过正则匹配
 https://i-blog.csdnimg.cn/direct/4d73e1ad831146248637b9d2f841abe2.png 

@pytest.mark.parametrize()

Allure可以或许很好的支持@pytest.mark.parametrize()举行参数化
 https://i-blog.csdnimg.cn/direct/9e3ebd8411764d22a21b6809cc8daa35.png 
with allure.step

@allure.step()标志函数使之成为测试步骤,而在测试函数/方法中,我们还可以通过with allure.step()的方式标志测试步骤。
它们之间的区别在于,@allure.step()用于标志通用函数,当这个被标志的函数被调用后,会插入步骤分析并展示在Allure陈诉中。
而with allure.step()则是将普通的代码标志为测试步骤,执行到这段代码时则会在Allure陈诉中展示步骤分析。
我们在上面代码的基础上,参加with allure.step(),示比方下:
import pytest
import allure
import os


class Counter:
    def __init__(self):
      self.value = 0

    def increment(self):
      self.value += 1

    @allure.step("get value")
    def get_value(self):
      return self.value


@pytest.fixture
def counter(request):#request 参数不需要传值
    #setup
    with allure.step("with.allure.step"):
      c = Counter()
      print("setup_value:",c.value)

    def reset_counter():
      #还原数据
      c.value = 0
      print("teardown_value:",c.value)

    request.addfinalizer(reset_counter)

    return c


def test_counter(counter):
    print('test-start')
    assert counter.get_value() == 0
    counter.increment()
    assert counter.get_value() == 1
    counter.increment()
    assert counter.get_value() == 2

if __name__ == '__main__':
    pytest.main(['-s','test_yield_finalizer.py','--alluredir','./result'])
    os.system('allure generate ./result -c -o ./report')

https://i-blog.csdnimg.cn/direct/5e00eeff2b3f4ea1bed1859ef9616118.png
fixture

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

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

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

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

https://i-blog.csdnimg.cn/direct/7a59fee5ce08419cb618454b398527a3.png

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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: pytest+allure