test_a.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import pytest, json
  2. import jsonpath
  3. from utils import get_excel as gexcel
  4. from utils.send import ApiClient
  5. from utils.write_log import write_log,clear_log
  6. from dic.global_value import GlobalInfo
  7. client = ApiClient()
  8. clear_log("url")
  9. clear_log("headers")
  10. clear_log("params")
  11. clear_log("data")
  12. clear_log("json")
  13. clear_log("respose")
  14. clear_log("globalInfo.txt")
  15. @pytest.mark.login
  16. def test_excel_path():
  17. print("login")
  18. assert 1 == 1
  19. @pytest.mark.parametrize("case_info", gexcel.get_excel("demo", 0))
  20. def test_case(case_info):
  21. #初始化全局变量
  22. dic = GlobalInfo().show_info()
  23. # 拼接请求参数
  24. url = case_info["url"]
  25. method = case_info["method"]
  26. headers = eval(case_info["headers"]) if case_info["headers"] else {}
  27. params = eval(case_info["params"]) if case_info["params"] else {}
  28. data = eval(case_info["data"]) if case_info["data"] else {}
  29. _json = eval(case_info["json"]) if case_info["json"] else {}
  30. # 前置操作
  31. # 写日志
  32. write_log("url",url)
  33. write_log("headers",headers)
  34. write_log("params",params)
  35. write_log("data",data)
  36. ## 变量替换
  37. res = client.send_request(method, url, headers=headers, params=params, data=data, json=_json)
  38. write_log("respose", res.json())
  39. # assert res.status_code == 200
  40. # 后置操作
  41. ## 提取变量
  42. if case_info["提取变量"] != "":
  43. vars_to_extract = [v.strip() for v in case_info["提取变量"].split(",") if v.strip()]
  44. for var in vars_to_extract:
  45. value = jsonpath.jsonpath(res.json(), f"$..{var}")
  46. if value:
  47. GlobalInfo().set_info(var, value[0])
  48. write_log("globalInfo.txt", json.dumps(GlobalInfo().show_info()))
  49. print(_json)