脚本在本地可以跑通,但是jenkins(云服务器)构建时就会存在“No such file or directory”的问题,老师或大佬帮忙看下该如何解决?

1、如图1


2、如图2,把形参level换成实参

dirname+filename 出来的数据不是字符串,你把他转成字符串就行了

试了好多次,都提示“No such file or directory”,jenkins控制台输出的这个路径不对,任务文件夹名为什么会有“None”,怎们处理?
【1】本地

【2】jenkins:

把代码完整贴上来,不然不太好分析

jenkins_consoleoutput.txt (23.2 KB)

*1. 【get_excel】:

def get_excel():
    """
    :: DIR_NAME项目所在路径,常量
    :: filepath:  相对路径(入参为项目下的路径,参照setting.py路径),如:./data/*.*
    ::keep_default_na:  读取文件会出现单元格 N/A,获取不到有效值;设置False获取空字符串
    ::engine:  指定引擎

    用来处理excel数据,希望获取的数据格式  "[[],[],[],[],[],[]]"
    """

    filepath = conf_parser_obj.configParser(["excel", "relative_path"])  # 参数配置ini文件
    sheet_name = conf_parser_obj.configParser(["excel", "sheet_name"])
    # getter.DIR_NAME 也替换为 DIR_NAME
    # path = os.path.abspath(str(DIR_NAME) + str(filepath))
    path = str(DIR_NAME) + str(filepath)  # E:\autoTestFrame\apiAutoTest\data\mtxshop_data.xlsx
    # path = r'E:/autoTestFrame/apiAutoTest/data/mtxshop_data.xlsx'
    # path = os.path.abspath(r'E:/autoTestFrame/apiAutoTest/data/mtxshop_data.xlsx')
    print(f"path为:{path}")
    pandrxl = pandas.read_excel(path, sheet_name=sheet_name, keep_default_na=False, engine='openpyxl')
    # print(pandrxl)
    # 元组中获取总行和总列 (lines,columns)
    lines = pandrxl.shape[0]  # 总行数
    cols = pandrxl.shape[1]  # 总行数
    # 数据解析不包含表头,所以数据是从第二行计算的
    data = []
    case_name = []
    for l in range(lines):  # 行
        line_list = []
        for c in range(cols):  # 列
            line_list.append(pandrxl.iloc[l, c])  # 获取单元格数据 pandrxl.iloc[1, 2]
            if c == 0:  # 获取第一列的用例名称
                case_name.append(pandrxl.iloc[l, c])  # 用例名称装表
        data.append(line_list)  # 全量数据装表
    return data, case_name

*2. 【TestBuyNow】

import allure
import javaobj
import pytest

from api.buyer.buy_now import BuyNowApi
from common.file_load import get_excel


@pytest.mark.usefixtures("get_token")
@allure.feature("买家接口")  # 模块
class TestBuyNow:

    data, case_name = get_excel()  # 解包:(数据,用例标题)

    @allure.story("买家立即购买接口")  # 功能点
    @allure.title("{case_name}")  # 用例标题   allure报告中的title
    @pytest.mark.parametrize("case_name,sku_id, num, except_code", data, ids=case_name)
    def test_buy_now(self, case_name, sku_id, num, except_code, Initialize_a_new_Redis_client):
        """BuyNowApi子类从BaseBuyerApi父类构造方法中间接继承了实例属性uid  super().__init__()"""

        buy_now_api = BuyNowApi(sku_id, num)
        uid = buy_now_api.uid  # 父类属性通过继承父类__init__构造方法,简介继承父类实例属性
        print(uid)
        p_sku_id = buy_now_api.params.get("sku_id")
        p_num = buy_now_api.params.get("num")
        res = buy_now_api.request()
        code = res.status_code

        # redis
        bContent = Initialize_a_new_Redis_client.get('{BUY_NOW_ORIGIN_DATA_PREFIX}_' + str(uid))  # 强转为字符换,然后字符转拼接
        print(f"bContent: {bContent}")
        # 从redis缓存中将Java序列化Value转换为二进制(bytes)python对象
        resList = javaobj.loads(bContent)
        obj = resList[0]  # python的"java类"的对象
        print(f"resList: {resList}")
        print(obj)
        print(dir(obj))  # dir(obj)返回参数(java对象)的属性、方法列表
        skuId = obj.__getattribute__("skuId")  # 获取属性值
        num = obj.__getattribute__("num")  # 获取属性值

        # # 断言
        pytest.assume(code == except_code)
        pytest.assume(skuId == p_sku_id)
        pytest.assume(num == p_num)```

急需解决!急!烦请老师或大佬帮忙解答下,感谢感谢~
【主要是本地脚本到了jenkins,报路径相关错误】
job代理节点slave01启动命令:

docker run -itd -v /etc/hosts:/etc/hosts --network jenkins --name slave01
apiautotest -url http://47.122.22.17:8080
229df21ef95e2528db6592b8d3557afe35aad17d0ce2c311ef5475091c8a0bb7 slave01

slave01对应镜像文件 docker build -t apiautotest .

FROM jenkins/inbound-agent
USER root
WORKDIR /home/jenkins
Run sed -i 's/deb.debian.org/mirrors.tencent.com/' /etc/apt/sources.list
RUN apt-get update && apt-get install -y python3 && apt-get install -y python3-pip

传参的时候是不是把参数丢了,感觉是参数没传过来

老师,方便远程下不,实在搞不定了 ,空时还请22期拉文群call我~“南京 - [5年] - lee”,先谢了老师