test_a.py 1.5 KB

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