Files
smart-management-auto-test/dulizhan/library/BusinessKw/JoyHub/ProductManage.py
zhouqi 3191ec4f3c feat: 新增JoyHub模块测试用例和功能增强
1. 新增模块测试用例:
   - News分类接口测试 (Joyhub_NewsCate.py)
   - News内容接口测试 (Joyhub_News.py)
   - 产品分类接口测试 (Joyhub_ProductCate.py)
   - 产品属性接口测试 (Joyhub_ProductAttr.py)
   - 产品管理接口测试 (Joyhub_Product.py)
   - FAQ分类接口测试 (Joyhub_FaqCate.py)
   - FAQ内容接口测试 (Joyhub_Faq.py)
   - 博客分类接口测试 (Joyhub_BlogCate.py)
   - 地址国家接口测试 (Joyhub_AddressCountry.py)
   - 下载二维码接口测试 (Joyhub_DownloadQrcode.py)
   - 支付页产品推荐接口测试 (Joyhub_ProductPaymentRecommend.py)

2. 新增业务关键字层:
   - NewsCateManage.py
   - NewsManage.py
   - ProductCateManage.py
   - ProductAttrManage.py
   - ProductManage.py
   - FaqCateManage.py
   - FaqManage.py
   - BlogCateManage.py
   - AddressCountryManage.py
   - DownloadQrcodeManage.py
   - ProductPaymentRecommendManage.py

3. 接口层增强:
   - Dlizhan_interface.py 添加JoyHub相关接口封装

4. 功能增强:
   - run_tests.py 添加自动清除旧测试结果和报告功能
   - Joyhub_Product.py 添加数据库连接获取运费模板ID和品牌ID

5. 修复:
   - 修复产品创建测试用例缺少前置数据问题
2026-05-08 18:09:48 +08:00

270 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding:utf-8 -*-
"""
产品管理业务关键字层
"""
import allure
from dulizhan.library.Dlizhan_interface import DlzhanInterface
from base_framework.public_tools import log
obj_log = log.get_logger()
class ProductManage(DlzhanInterface):
"""产品管理业务关键字类"""
def __init__(self):
super().__init__()
@allure.step("创建产品")
def kw_joyhub_product_create_post(self, product_name, product_cate_id, shipping_template_id, route, intro,
brand_id, product_attrs, product_skus, id=0, product_type=1,
status=1, rank_num=None, seo_title=None, seo_keyword=None,
seo_description=None, single_user_exchange_limit=None,
single_product_exchange_limit=None, product_details=None):
"""
创建产品业务关键字
:param id: 主键新增为0
:param product_type: 产品类型(普通产品=1积分产品=2
:param product_name: 产品名称
:param product_cate_id: 产品分类
:param shipping_template_id: 运费模板ID
:param route: 跳转路由
:param intro: 产品简介
:param brand_id: 品牌id
:param status: 状态1上架2下架
:param rank_num: 序号(可选)
:param seo_title: SEO标题可选
:param seo_keyword: SEO关键词可选
:param seo_description: SEO描述可选
:param single_user_exchange_limit: 单用户兑换次数限制(可选)
:param single_product_exchange_limit: 单次兑换数量限制(可选)
:param product_attrs: 产品规格类型关联列表
:param product_skus: 产品规格列表
:param product_details: 产品详情列表(可选)
:return: 响应结果
"""
obj_log.info(f"创建产品 - product_name: {product_name}, product_type: {product_type}")
params = {
"id": id,
"productType": product_type,
"productName": product_name,
"productCateId": product_cate_id,
"shippingTemplateId": shipping_template_id,
"route": route,
"intro": intro,
"brandId": brand_id,
"status": status,
"productAttrs": product_attrs,
"productSkus": product_skus
}
if rank_num is not None:
params["rankNum"] = rank_num
if seo_title is not None:
params["seoTitle"] = seo_title
if seo_keyword is not None:
params["seoKeyword"] = seo_keyword
if seo_description is not None:
params["seoDescription"] = seo_description
if single_user_exchange_limit is not None:
params["singleUserExchangeLimit"] = single_user_exchange_limit
if single_product_exchange_limit is not None:
params["singleProductExchangeLimit"] = single_product_exchange_limit
if product_details is not None:
params["productDetails"] = product_details
resp = self.kw_in_joyhub_product_create_post(**params)
obj_log.info(f"创建产品响应: {resp}")
return resp
@allure.step("删除产品")
def kw_joyhub_product_delete_delete(self, product_id):
"""
删除产品业务关键字
:param product_id: 产品ID
:return: 响应结果
"""
obj_log.info(f"删除产品 - product_id: {product_id}")
resp = self.kw_in_joyhub_product_delete_delete(product_id)
obj_log.info(f"删除产品响应: {resp}")
return resp
@allure.step("批量删除产品")
def kw_joyhub_product_delete_list_delete(self, ids):
"""
批量删除产品业务关键字
:param ids: 产品ID列表
:return: 响应结果
"""
obj_log.info(f"批量删除产品 - ids: {ids}")
resp = self.kw_in_joyhub_product_delete_list_delete(ids)
obj_log.info(f"批量删除产品响应: {resp}")
return resp
@allure.step("获得产品详情")
def kw_joyhub_product_get_get(self, product_id):
"""
获得产品详情业务关键字
:param product_id: 产品ID
:return: 响应结果
"""
obj_log.info(f"获得产品详情 - product_id: {product_id}")
resp = self.kw_in_joyhub_product_get_get(product_id)
obj_log.info(f"获得产品详情响应: {resp}")
return resp
@allure.step("获得产品分页")
def kw_joyhub_product_page_get(self, page_no=1, page_size=10, **kwargs):
"""
获得产品分页业务关键字
:param page_no: 页码
:param page_size: 每页大小
:param kwargs: 其他查询条件
:return: 响应结果
"""
obj_log.info(f"获得产品分页 - page_no: {page_no}, page_size: {page_size}")
params = {
"pageNo": page_no,
"pageSize": page_size
}
params.update(kwargs)
resp = self.kw_in_joyhub_product_page_get(**params)
obj_log.info(f"获得产品分页响应: {resp}")
return resp
@allure.step("获得产品规格类型关联列表")
def kw_joyhub_product_product_attr_list_by_product_id_get(self, product_id):
"""
获得产品规格类型关联列表业务关键字
:param product_id: 产品ID
:return: 响应结果
"""
obj_log.info(f"获得产品规格类型关联列表 - product_id: {product_id}")
resp = self.kw_in_joyhub_product_product_attr_list_by_product_id_get(product_id)
obj_log.info(f"获得产品规格类型关联列表响应: {resp}")
return resp
@allure.step("获得产品详情列表")
def kw_joyhub_product_product_detail_list_by_product_id_get(self, product_id):
"""
获得产品详情列表业务关键字
:param product_id: 产品ID
:return: 响应结果
"""
obj_log.info(f"获得产品详情列表 - product_id: {product_id}")
resp = self.kw_in_joyhub_product_product_detail_list_by_product_id_get(product_id)
obj_log.info(f"获得产品详情列表响应: {resp}")
return resp
@allure.step("获得产品规格列表")
def kw_joyhub_product_product_sku_list_by_product_id_get(self, product_id):
"""
获得产品规格列表业务关键字
:param product_id: 产品ID
:return: 响应结果
"""
obj_log.info(f"获得产品规格列表 - product_id: {product_id}")
resp = self.kw_in_joyhub_product_product_sku_list_by_product_id_get(product_id)
obj_log.info(f"获得产品规格列表响应: {resp}")
return resp
@allure.step("获得产品及规格列表-优惠券中使用")
def kw_joyhub_product_product_sku_list_get(self, **kwargs):
"""
获得产品及规格列表-优惠券中使用业务关键字
:param kwargs: 查询条件
:return: 响应结果
"""
obj_log.info(f"获得产品及规格列表 - params: {kwargs}")
resp = self.kw_in_joyhub_product_product_sku_list_get(**kwargs)
obj_log.info(f"获得产品及规格列表响应: {resp}")
return resp
@allure.step("更新产品")
def kw_joyhub_product_update_put(self, product_id, product_name, product_cate_id, shipping_template_id, route, intro,
brand_id, product_attrs, product_skus, product_type=1,
status=1, rank_num=None, seo_title=None, seo_keyword=None,
seo_description=None, single_user_exchange_limit=None,
single_product_exchange_limit=None, product_details=None):
"""
更新产品业务关键字
:param product_id: 产品ID
:param product_type: 产品类型(普通产品=1积分产品=2
:param product_name: 产品名称
:param product_cate_id: 产品分类
:param shipping_template_id: 运费模板ID
:param route: 跳转路由
:param intro: 产品简介
:param brand_id: 品牌id
:param status: 状态1上架2下架
:param rank_num: 序号(可选)
:param seo_title: SEO标题可选
:param seo_keyword: SEO关键词可选
:param seo_description: SEO描述可选
:param single_user_exchange_limit: 单用户兑换次数限制(可选)
:param single_product_exchange_limit: 单次兑换数量限制(可选)
:param product_attrs: 产品规格类型关联列表
:param product_skus: 产品规格列表
:param product_details: 产品详情列表(可选)
:return: 响应结果
"""
obj_log.info(f"更新产品 - product_id: {product_id}, product_name: {product_name}")
params = {
"id": product_id,
"productType": product_type,
"productName": product_name,
"productCateId": product_cate_id,
"shippingTemplateId": shipping_template_id,
"route": route,
"intro": intro,
"brandId": brand_id,
"status": status,
"productAttrs": product_attrs,
"productSkus": product_skus
}
if rank_num is not None:
params["rankNum"] = rank_num
if seo_title is not None:
params["seoTitle"] = seo_title
if seo_keyword is not None:
params["seoKeyword"] = seo_keyword
if seo_description is not None:
params["seoDescription"] = seo_description
if single_user_exchange_limit is not None:
params["singleUserExchangeLimit"] = single_user_exchange_limit
if single_product_exchange_limit is not None:
params["singleProductExchangeLimit"] = single_product_exchange_limit
if product_details is not None:
params["productDetails"] = product_details
resp = self.kw_in_joyhub_product_update_put(**params)
obj_log.info(f"更新产品响应: {resp}")
return resp
@allure.step("批量上下架产品")
def kw_joyhub_product_change_status_put(self, ids, status):
"""
批量上下架产品业务关键字
:param ids: 产品ID列表
:param status: 状态1上架2下架
:return: 响应结果
"""
obj_log.info(f"批量上下架产品 - ids: {ids}, status: {status}")
params = {
"ids": ids,
"status": status
}
resp = self.kw_in_joyhub_product_change_status_put(**params)
obj_log.info(f"批量上下架产品响应: {resp}")
return resp