Files
smart-management-auto-test/dulizhan/library/BusinessKw/JoyHub/NewsCateManage.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

168 lines
5.5 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 -*-
"""
news分类管理业务关键字层
"""
import allure
from dulizhan.library.Dlizhan_interface import DlzhanInterface
from base_framework.public_tools import log
obj_log = log.get_logger()
class NewsCateManage(DlzhanInterface):
"""news分类管理业务关键字类"""
def __init__(self):
super().__init__()
@allure.step("创建news分类")
def kw_joyhub_news_cate_create_post(self, name, id=0, status=1, rank_num=1, route=None, cover_image=None):
"""
创建news分类业务关键字
:param id: 主键新增为0
:param name: 分类名称
:param status: 状态 (1正常 2停用)
:param rank_num: 排序号
:param route: 路由(可选)
:param cover_image: 缩略图(可选)
:return: 响应结果
"""
obj_log.info(f"创建news分类 - name: {name}")
params = {
"id": id,
"name": name,
"status": status,
"rankNum": rank_num
}
if route is not None:
params["route"] = route
if cover_image is not None:
params["coverImage"] = cover_image
resp = self.kw_in_joyhub_news_cate_create_post(**params)
obj_log.info(f"创建news分类响应: {resp}")
return resp
@allure.step("删除news分类")
def kw_joyhub_news_cate_delete_delete(self, news_cate_id):
"""
删除news分类业务关键字
:param news_cate_id: news分类ID
:return: 响应结果
"""
obj_log.info(f"删除news分类 - news_cate_id: {news_cate_id}")
resp = self.kw_in_joyhub_news_cate_delete_delete(news_cate_id)
obj_log.info(f"删除news分类响应: {resp}")
return resp
@allure.step("批量删除news分类")
def kw_joyhub_news_cate_delete_list_delete(self, ids):
"""
批量删除news分类业务关键字
:param ids: news分类ID列表
:return: 响应结果
"""
obj_log.info(f"批量删除news分类 - ids: {ids}")
resp = self.kw_in_joyhub_news_cate_delete_list_delete(ids)
obj_log.info(f"批量删除news分类响应: {resp}")
return resp
@allure.step("获得news分类详情")
def kw_joyhub_news_cate_get_get(self, news_cate_id):
"""
获得news分类详情业务关键字
:param news_cate_id: news分类ID
:return: 响应结果
"""
obj_log.info(f"获得news分类详情 - news_cate_id: {news_cate_id}")
resp = self.kw_in_joyhub_news_cate_get_get(news_cate_id)
obj_log.info(f"获得news分类详情响应: {resp}")
return resp
@allure.step("获得news分类分页")
def kw_joyhub_news_cate_page_get(self, page_no=1, page_size=10, **kwargs):
"""
获得news分类分页业务关键字
:param page_no: 页码
:param page_size: 每页大小
:param kwargs: 其他查询条件
:return: 响应结果
"""
obj_log.info(f"获得news分类分页 - page_no: {page_no}, page_size: {page_size}")
params = {
"pageNo": page_no,
"pageSize": page_size
}
params.update(kwargs)
resp = self.kw_in_joyhub_news_cate_page_get(**params)
obj_log.info(f"获得news分类分页响应: {resp}")
return resp
@allure.step("更新news分类")
def kw_joyhub_news_cate_update_put(self, news_cate_id, name, status=1, rank_num=1, route=None, cover_image=None):
"""
更新news分类业务关键字
:param news_cate_id: news分类ID
:param name: 分类名称
:param status: 状态 (1正常 2停用)
:param rank_num: 排序号
:param route: 路由(可选)
:param cover_image: 缩略图(可选)
:return: 响应结果
"""
obj_log.info(f"更新news分类 - news_cate_id: {news_cate_id}, name: {name}")
params = {
"id": news_cate_id,
"name": name,
"status": status,
"rankNum": rank_num
}
if route is not None:
params["route"] = route
if cover_image is not None:
params["coverImage"] = cover_image
resp = self.kw_in_joyhub_news_cate_update_put(**params)
obj_log.info(f"更新news分类响应: {resp}")
return resp
def clean_test_data_from_db(self, name):
"""
从数据库表jh_news_cate中删除测试数据
:param name: 要删除的分类名称
:return: 删除是否成功
"""
obj_log.info(f"从数据库删除测试数据 - name: {name}")
try:
import pymysql
# 数据库连接配置(需要根据实际环境配置)
connection = pymysql.connect(
host='localhost',
user='root',
password='password',
database='joyhub',
charset='utf8mb4'
)
with connection.cursor() as cursor:
sql = "DELETE FROM jh_news_cate WHERE name LIKE %s"
cursor.execute(sql, (f"%{name}%",))
connection.commit()
deleted_count = cursor.rowcount
obj_log.info(f"成功删除 {deleted_count} 条测试数据")
return True
except Exception as e:
obj_log.error(f"删除测试数据失败: {str(e)}")
return False
finally:
if 'connection' in locals():
connection.close()