python3正则匹配扫描项目下所有java文件

该博客介绍了一种自动化测试方法,通过扫描项目工程获取文件路径,读取`.service.yml`文件获取服务和版本信息,再遍历Java文件,使用正则表达式匹配`@Mapping`注解来提取接口URL。最终,该方法用于构建接口测试的数据集合。
摘要由CSDN通过智能技术生成

log:

背景

通过扫描项目工程,自动匹配部分内容,完成测试

思路

  1. 获取项目根目录
  2. 通过os.walk获取 文件路径、文件夹、文件
  3. 匹配继续遍历
  4. 通过macet.grout()获取需要的内容
# !/usr/bin/env python
# -*- encoding: utf-8 -*-
# @Author : yyq
import os
import re


def path():
    return os.path.dirname(os.path.abspath(__file__))


def readUrl():
    global serviceUrl, versionUrl
    f = open(path() + '/.service.yml', 'r')
    for i in f:
        service = re.match('\sname:\s(.*)', str(i))
        version = re.match('\sapiVersion:\s"(.*)"', str(i))
        if service:
            serviceUrl = service.group(1)
        if version:
            versionUrl = version.group(1)
    f.close()
    return str(serviceUrl + '/' + versionUrl)


def readJava():
    allData = []
    import os
    files = path()
    for root, dirs, file in os.walk(files):
        for fil in file:
            javaFile = re.match('(.*?)java$', str(fil))
            if javaFile:
                aa = str(root) + '/' + str(javaFile.group())
                f = open(aa, 'r')
                allData.append(interfaceUrl(f))
                f.close()
    allData = sum(allData, [])
    return allData


def interfaceUrl(dataFile):
    data = []
    aa = {}
    for filedata in dataFile:
        macet = re.search('@(.*)Mapping\("(.*)"\)$', str(filedata))
        if macet:
            a = macet.group(1)
            b = macet.group(2)
            a = str(a) + str(len(filedata))
            aa[a] = b
    if aa:
        reqk = [k for k in aa.keys()][0]
        reqv = [v for v in aa.values()][0]
        reqk_count = len([k for k in aa.keys()])
        if 'Request' in reqk and reqk_count>1:
            aa.pop(reqk)
            for k, v in aa.items():
                data.append(readUrl() + reqv + v)
        elif 'Request' in reqk and reqk_count == 1:
            aa.pop(reqk)
            data.append(readUrl() + reqv)
        else:
            for k, v in aa.items():
                data.append(readUrl() + v)
    else:
        pass
    return data


print("sacnStart:", readJava(), "scanEnd")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值