持续交付 Jenkins+pytest+allure 自动化持续交付,几个问题寻找解决办法

· 2020年09月02日 · 最后由 测试游记 回复于 2020年09月03日 · 439 次阅读

Jenkins+pytest+allure 自动化持续交付 已经是很成熟的框架,但以下几个问题,为什么一直没找到更好的解决办法;

1、pytest 中 case 超时限制。@pytest.mark.timeout(10) 可以设置单个 case 的超时,但单个 case 超时后,影响了之后剩余 case 的执行。目标:单个 case 设置超时,超时后抛出错误、继续执行下一个 case;

2、Jenkins+pytest+allure 的自动化运行方式,如何针对 “构建轮次” 中失败、异常的进行重新推送;

3、Jenkins+pytest+allure 的自动化运行方式,如何针对 “构建轮次” 中断的进行继续推送;

了解的可以一一进行解答。

共收到 1 条回复 时间 点赞

问题 1
写个装饰器:

import time
import eventlet
import functools

eventlet.monkey_patch(time=True)

def time_limit(timeout):
    def wrapper(func):
        @functools.wraps(func)
        def to_do(*args, **kwargs):
            with eventlet.Timeout(int(timeout), True):
            ret = func(*args, **kewars)
            return ret
        return to_do
    return wrapper

问题 2
conftest.py中编写
pytest_terminal_summary
具体判断和操作自行编写

import time
from _pytest import terminal

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    '''收集测试结果'''
    print(terminalreporter.stats)
    print("total:", terminalreporter._numcollected)
    print('passed:', len(terminalreporter.stats.get('passed', [])))
    print('failed:', len(terminalreporter.stats.get('failed', [])))
    print('error:', len(terminalreporter.stats.get('error', [])))
    print('skipped:', len(terminalreporter.stats.get('skipped', [])))
    duration = time.time() - terminalreporter._sessionstarttime
    print('total times:', duration, 'seconds')


公众号:【测试游记】

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册