6.UI自动化测试框架搭建-常用操作封装(二)

2022-03-29 16:38:53 浏览数 (1)

Allure头部装饰器组合

根据【装饰器叠加】里面的操作

增加allureoperator.py函数编写一个组合装饰器compose

代码语言:javascript复制
@allure.feature('大模块')
@allure.story('子模块')
@allure.title('这个test_b')
@allure.issue('url', '问题单:xxx')
def test_b():
    print('ok')

变成

代码语言:javascript复制
@compose(feature='大模块', 
         story='子模块', 
         title='这个test_b', 
         issue=('url', '问题单:xxx'))
def test_b():
    print('ok')

完整代码:

代码语言:javascript复制
def compose(**kwargs):
    """
    将头部ALlure装饰器进行封装
    可以采用:
        feature='模块名称'
        story='用户故事'
        title='用例标题'
        testcase='测试用例链接地址'
        severity='用例等级(blocker、critical、normal、minor、trivial)'
        link='链接'
        issue=('bug地址', 'bug名称')
    的方式入参数
    :param kwargs:
    :return:
    """

    def deco(f):
        builtins.__dict__.update({'allure': allure})
        # 失败重跑
        if kwargs.get("reruns"):
            f = pytest.mark.flaky(
                reruns=kwargs.get("reruns", 2),  # 默认共执行2次
                reruns_delay=kwargs.get("reruns_delay", 5)  # 默认等待5秒
            )(f)
            kwargs.pop("reruns")
            if kwargs.get("reruns_delay"):
                kwargs.pop("reruns_delay")
        _kwargs = [('allure.'   key, value) for key, value in kwargs.items()]
        for allurefunc, param in reversed(_kwargs):
            if param:
                f = eval(allurefunc)(param)(f)
            else:
                f = eval(allurefunc)(f)
        return f

    return deco

Allure报告中的附件插入

在报告中,经常需要贴上图片或者文字信息来辅助问题定位

增加两个方法:

  • attach_png:在报告中贴上图片附件
  • attach_text:在报告中贴上文字附件
代码语言:javascript复制
def attach_png(pic_path, name, ele=None):
    """
    将png图片存放到allure报告上
    :param pic_path: 图片位置
    :param name: 展示的名称
    :param ele: ElementOperator对象
    :return:
    """
    try:
        if ele:
            ele.screenshot_pic(pic_path)
        allure.attach.file(source=pic_path, name=name, attachment_type=allure.attachment_type.PNG)
        logger.info(f'截图 {name},存放到 {pic_path} 成功!')
    except Exception as e:
        logger.error(f'存放图片{name}失败:{e}')
代码语言:javascript复制
def attach_text(body, name):
    """
    将text放在allure报告上
    :param body: 内容
    :param name: 标题
    :return:
    """
    try:
        allure.attach(body=str(body), name=str(name), attachment_type=allure.attachment_type.TEXT)
        logger.info(f'存放文字 {name}:{body} 成功!')
    except Exception as e:
        logger.error(f'存放文字失败 {name}:{body}!:{e}')

0 人点赞