feat: 添加JoyHub运费模板和Banner管理接口用例
This commit is contained in:
174
dulizhan/test_case/TestCase/接口/JoyHub/Joyhub_UserProfile.py
Normal file
174
dulizhan/test_case/TestCase/接口/JoyHub/Joyhub_UserProfile.py
Normal file
@@ -0,0 +1,174 @@
|
||||
import pytest
|
||||
import allure
|
||||
import logging
|
||||
import requests
|
||||
import json
|
||||
from dulizhan.library.BusinessKw.JoyHub.UserProfile import UserProfile
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
|
||||
|
||||
@allure.feature("管理后台 - 用户个人中心模块")
|
||||
class TestUserProfile:
|
||||
token_set = False
|
||||
original_password = "Zhou1599"
|
||||
test_password = "Aa123456"
|
||||
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
"""在整个测试类开始时登录一次,所有测试用例共享token"""
|
||||
logging.info("=============================================")
|
||||
logging.info("=========== 开始登录,获取Token ============")
|
||||
logging.info("=============================================")
|
||||
|
||||
cls.test_case = UserProfile()
|
||||
username = "joytest"
|
||||
password = cls.original_password
|
||||
|
||||
cls.test_case._clear_user_fingerprint(username)
|
||||
|
||||
url = "https://joyhub-website-manager-api-test.best-envision.com/admin-api/system/auth/login-dev"
|
||||
payload = {"username": username, "password": password}
|
||||
headers = {'Content-Type': 'application/json', 'tenant-id': '126'}
|
||||
|
||||
try:
|
||||
response = requests.post(url, json=payload, headers=headers, verify=False, timeout=10)
|
||||
login_response = response.json()
|
||||
|
||||
if login_response and login_response.get('code') == 0:
|
||||
token = login_response.get('data', {}).get('accessToken', '')
|
||||
if token:
|
||||
cls.test_case.set_joyhub_token(token)
|
||||
cls.token_set = True
|
||||
logging.info("登录成功,获取到Token: {}...".format(token[:20]))
|
||||
else:
|
||||
logging.warning("登录成功但未获取到Token")
|
||||
else:
|
||||
logging.error("登录失败: {}".format(login_response))
|
||||
except Exception as e:
|
||||
logging.error("登录异常: {}".format(str(e)))
|
||||
|
||||
def setup_method(self):
|
||||
"""每个测试方法执行前检查token"""
|
||||
if not self.token_set:
|
||||
pytest.skip("Token未设置,跳过测试")
|
||||
|
||||
@classmethod
|
||||
def teardown_class(cls):
|
||||
"""测试类结束后,确保密码改回原密码"""
|
||||
logging.info("=============================================")
|
||||
logging.info("=========== 测试结束,恢复原密码 ============")
|
||||
logging.info("=============================================")
|
||||
|
||||
try:
|
||||
# 先用测试密码登录
|
||||
url = "https://joyhub-website-manager-api-test.best-envision.com/admin-api/system/auth/login-dev"
|
||||
payload = {"username": "joytest", "password": cls.test_password}
|
||||
headers = {'Content-Type': 'application/json', 'tenant-id': '126'}
|
||||
response = requests.post(url, json=payload, headers=headers, verify=False, timeout=10)
|
||||
login_response = response.json()
|
||||
|
||||
if login_response and login_response.get('code') == 0:
|
||||
token = login_response.get('data', {}).get('accessToken', '')
|
||||
if token:
|
||||
# 修改回原密码
|
||||
cls.test_case.set_joyhub_token(token)
|
||||
resp = cls.test_case.kw_joyhub_user_profile_update_password_put(
|
||||
old_password=cls.test_password,
|
||||
new_password=cls.original_password
|
||||
)
|
||||
if resp and resp.get('code') == 0:
|
||||
logging.info("密码已恢复为原密码: {}".format(cls.original_password))
|
||||
else:
|
||||
logging.warning("恢复原密码失败: {}".format(resp))
|
||||
except Exception as e:
|
||||
logging.error("恢复原密码异常: {}".format(str(e)))
|
||||
|
||||
@allure.story("验证获得登录用户信息")
|
||||
@allure.title("测试获得登录用户信息接口")
|
||||
def test_joyhub_user_profile_get_get(self):
|
||||
"""测试获得登录用户信息接口"""
|
||||
with allure.step("1. 调用接口"):
|
||||
resp = self.test_case.kw_joyhub_user_profile_get_get()
|
||||
allure.attach(json.dumps(resp, ensure_ascii=False, indent=2), name="响应数据", attachment_type=allure.attachment_type.JSON)
|
||||
|
||||
with allure.step("2. 验证响应"):
|
||||
assert resp is not None, "响应为空"
|
||||
assert "code" in resp, "响应中缺少code字段"
|
||||
assert resp["code"] == 0, f"请求失败,code={resp.get('code')}"
|
||||
assert "data" in resp, "响应中缺少data字段"
|
||||
assert "id" in resp["data"], "响应中缺少id字段"
|
||||
assert "username" in resp["data"], "响应中缺少username字段"
|
||||
logging.info("获得登录用户信息接口验证通过")
|
||||
|
||||
@allure.story("验证修改用户个人信息")
|
||||
@allure.title("测试修改用户个人信息接口")
|
||||
def test_joyhub_user_profile_update_put(self):
|
||||
"""测试修改用户个人信息接口"""
|
||||
with allure.step("1. 先获取当前用户信息"):
|
||||
get_resp = self.test_case.kw_joyhub_user_profile_get_get()
|
||||
if not get_resp or get_resp.get('code') != 0:
|
||||
pytest.skip("获取用户信息失败,跳过修改测试")
|
||||
|
||||
original_data = get_resp.get('data', {})
|
||||
allure.attach(json.dumps(original_data, ensure_ascii=False, indent=2), name="原始用户信息", attachment_type=allure.attachment_type.JSON)
|
||||
|
||||
with allure.step("2. 准备修改参数"):
|
||||
params = {
|
||||
"nickname": "测试用户_修改",
|
||||
"email": "test_updated@example.com",
|
||||
"mobile": "13900139000",
|
||||
"sex": 1
|
||||
}
|
||||
allure.attach(json.dumps(params, ensure_ascii=False), name="修改参数", attachment_type=allure.attachment_type.TEXT)
|
||||
|
||||
with allure.step("3. 调用修改接口"):
|
||||
resp = self.test_case.kw_joyhub_user_profile_update_put(**params)
|
||||
allure.attach(json.dumps(resp, ensure_ascii=False, indent=2), name="响应数据", attachment_type=allure.attachment_type.JSON)
|
||||
|
||||
with allure.step("4. 验证响应"):
|
||||
assert resp is not None, "响应为空"
|
||||
assert "code" in resp, "响应中缺少code字段"
|
||||
assert resp["code"] == 0, f"请求失败,code={resp.get('code')}"
|
||||
assert "data" in resp, "响应中缺少data字段"
|
||||
assert resp["data"] is True, "修改用户个人信息失败"
|
||||
logging.info("修改用户个人信息接口验证通过")
|
||||
|
||||
with allure.step("5. 恢复原始信息"):
|
||||
# 恢复原始信息
|
||||
restore_params = {
|
||||
"nickname": original_data.get("nickname", ""),
|
||||
"email": original_data.get("email", ""),
|
||||
"mobile": original_data.get("mobile", ""),
|
||||
"sex": original_data.get("sex"),
|
||||
"avatar": original_data.get("avatar", "")
|
||||
}
|
||||
restore_resp = self.test_case.kw_joyhub_user_profile_update_put(**restore_params)
|
||||
if restore_resp and restore_resp.get('code') == 0:
|
||||
logging.info("用户信息已恢复")
|
||||
else:
|
||||
logging.warning("恢复用户信息失败: {}".format(restore_resp))
|
||||
|
||||
@allure.story("验证修改用户个人密码")
|
||||
@allure.title("测试修改用户个人密码接口")
|
||||
def test_joyhub_user_profile_update_password_put(self):
|
||||
"""测试修改用户个人密码接口"""
|
||||
with allure.step("1. 准备修改密码参数"):
|
||||
params = {
|
||||
"old_password": self.original_password,
|
||||
"new_password": self.test_password
|
||||
}
|
||||
allure.attach(json.dumps({"oldPassword": "******", "newPassword": "******"}, ensure_ascii=False), name="修改参数", attachment_type=allure.attachment_type.TEXT)
|
||||
|
||||
with allure.step("2. 调用修改密码接口"):
|
||||
resp = self.test_case.kw_joyhub_user_profile_update_password_put(**params)
|
||||
allure.attach(json.dumps(resp, ensure_ascii=False, indent=2), name="响应数据", attachment_type=allure.attachment_type.JSON)
|
||||
|
||||
with allure.step("3. 验证响应"):
|
||||
assert resp is not None, "响应为空"
|
||||
assert "code" in resp, "响应中缺少code字段"
|
||||
assert resp["code"] == 0, f"请求失败,code={resp.get('code')}"
|
||||
assert "data" in resp, "响应中缺少data字段"
|
||||
assert resp["data"] is True, "修改用户个人密码失败"
|
||||
logging.info("修改用户个人密码接口验证通过,密码已修改为: {}".format(self.test_password))
|
||||
logging.info("注意:测试类结束后将自动恢复原密码: {}".format(self.original_password))
|
||||
Reference in New Issue
Block a user