1、如图1
2、如图2,把形参level换成实参
dirname+filename 出来的数据不是字符串,你把他转成字符串就行了
把代码完整贴上来,不然不太好分析
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”,先谢了老师