pytest-运行指定用例(通过可配置文件)

本文介绍如何通过配置yml文件在Jenkins中选择性运行pytest测试用例。在pytest_configure钩子中读取配置文件内容,将所需执行的用例保存到环境变量,然后在pytest_collection_modifyitems钩子中过滤不需要的用例,从而实现并行执行时的用例筛选。这种方法允许在构建任务中动态选择要运行的测试,提高自动化测试的灵活性。
摘要由CSDN通过智能技术生成

pytest想要运行指定用例除了可以在命令上加参数,还能通过在文件里配置来实现运行指定的用例
up收到的需求是,在jenkins上通过勾选用例之后构建任务,pytest就能够执行指定的用例
up设计的是通过把想要执行的用例都配置到yml文件中,在jenkins勾选后,就可以修改里面的文件来达到需求

#yml文件
ScriptsFile:
  all_script:   #这里代表的是所有的用例,方便jenkins去显示所有的用例
    - test_a
    - test_b
    - test_c
    - test_d
    - test_e
    - test_f
    - test_g
    - test_h
    - test_i
    - test_j

  run_script:   #这里代表的是需要执行的用例
    - test_a
    - test_d
    - test_e
    - test_c

因为up是通过并行执行用例的方式去执行,所以收集获取是放在了pytest_configure钩子函数中,作为前置函数(具体可以看up之前的帖子)
在前置函数中通过yml读取到需要执行的用例,并保存在环境变量中(不能用全局变量,因为其他进程的worker不能获取到),然后在pytest_collection_modifyitems钩子函数中拿到,就可以去掉不需要的用例了(注意:只能在原items中进行操作,不能新建items对象来替换,否则会失效)

def pytest_collection_modifyitems(items):
    '''
    收集用例钩子函数:根据配置过滤出不需要的用例
    :param session:
    :param config:
    :param items:
    :return:
    '''
    if len(items) == len(os.environ['runlist'].split(',')):
        for i in range(len(items) - 1, -1, -1):
            if items[i].name not in os.environ['runlist'].split(','):
                items.remove(items[i])
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值