aaaaaaaaaa

This commit is contained in:
floraachy 2022-08-10 02:09:31 +00:00 committed by Gitee
parent 4f0764da01
commit 202aa0d448
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 76 additions and 0 deletions

76
test_login_api.py Normal file
View File

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
# @Time : 2021/8/14 23:46
# @Author : Flora.Chen
# @File : test_login_ui.py
# @Software: PyCharm
# @Desc:
from test_api import os, API_DATA, BaseApi, json, pytest, operate_deepdiff, logger, EnvData, extras
from utils.otherUtils.handle_eval_data import eval_data_process
def check_case_data():
data = EnvData.check_data(os.path.join(API_DATA, "login_data.yaml"))
return data
@pytest.mark.api
@pytest.mark.loginapi
class TestLoginApi:
"""
登录的API测试用例
"""
cases = check_case_data()
logger.debug("测试一下这部分代码是否运行")
@pytest.mark.parametrize("case", cases, ids=["{}".format(case["title"]) for case in cases])
def test_login_api(self, case, env_users, extra):
"""
测试登录接口的测试用例
"""
if case["is_run"] is False:
reason = f"该用例:[{case['title']}], 用例文件设置了暂时跳过, is_run=false"
logger.info(reason)
pytest.skip(reason)
logger.info("--------------开始执行用例--------------")
logger.info(f"用例标题:{case['title']}")
logger.info(f"初始用例数据:{case}")
host, users = env_users
# 给测试数据类设置类属性,方便后面用例数据的替换
setattr(EnvData, "login", users["reporter"]["user"])
setattr(EnvData, "password", users["reporter"]["pwd"])
setattr(EnvData, "username", users["reporter"]["nickname"])
setattr(EnvData, "user_id", users["reporter"]["id"])
# 替换用例数据
case = EnvData.replace_data(json.dumps(case, ensure_ascii=False))
case = json.loads(case)
case["url"] = host + case["url"]
logger.info(f"替换后的用例数据:{case}")
extra.append(extras.text(str(case), name="替换后的用例数据"))
# 断言
try:
response = BaseApi().send_request(**case)
actual = response.json()
expected = eval_data_process(case['assert']['expected_response'])
logger.info(f"预期结果:{expected}\n实际结果:{actual}")
extra.append(extras.text(f"预期结果:{expected}\n实际结果:{actual}", name="测试结果"))
if case["assert"].get("expected_response_code"):
assert response.status_code == case["assert"]["expected_response_code"]
if case["assert"].get("expected_response"):
operate_deepdiff(case["assert"]["expected_response"], actual,
{"exclude_paths": {"root['image_url']", "root['is_watch']", "root['admin']",
"root['user_identity']"}})
except AttributeError as e:
logger.error(f"断言时遇到了异常:{e},当前用例:【{case['title']}】测试失败")
raise e
else:
logger.info(f"当前用例:【{case['title']}】测试通过")
finally:
logger.info("--------------当前用例执行完毕--------------")