在做测试的时候,公司可以有好几套测试环境。有测试环境,预发布环境。每个环境中服务器的ip地址不一样,但是路径,请求参数都是一样。我们写的自动化代码,应该可以在不同的环境下执行。

创建配置文件

config/BasicConfig.py

  1. """
  2. 定义一些常用的配置
  3. """
  4. class BasicConfig:
  5. SERVERURL = "http://49.233.108.117:28019/"
  6. # 上下游传参
  7. TOKEN = None

在myrequests.py 文件中发送的请求url 前缀都是用 配置文件的 SERVERURL。 修改myrequests.py 文件
添加

  1. url = BasicConfig.SERVERURL+url

utils/myrequests.py

  1. import requests
  2. from config.BasicConfig import BasicConfig
  3. from utils.mylogger import logger
  4. class MyRequests:
  5. def __init__(self):
  6. self.logger = logger
  7. def do_requests(self, method, url, params=None, data=None, json=None, **kwargs):
  8. """
  9. 自定义请求 请求url,只需要传参 服务器ip地址之后的路径即可。
  10. :param method: 请求方法
  11. :param url: 请求的url
  12. :param params: get请求参数
  13. :param data: post请求参数
  14. :param json: post 请求参数
  15. :param kwargs: 其他参数
  16. :return:
  17. """
  18. url = BasicConfig.SERVERURL+url
  19. if method == 'get':
  20. # 添加日志
  21. self.logger.debug(f"发送get请求,请求地址:{url},请求参数: {params}")
  22. # 调用requests get 请求
  23. r = requests.get(url, params=params, **kwargs)
  24. # 添加日志
  25. self.logger.debug(f"服务器返回结果:{r.text}")
  26. return r
  27. elif method == "post":
  28. self.logger.debug(f'发送post请求,请求地址:{url},请求数据:{json}, {data}')
  29. r = requests.post(url, data=data, json=json, **kwargs)
  30. self.logger.debug(f'服务器返回结果:{r.text}')
  31. return r
  32. if __name__ == '__main__':
  33. # 模拟发送请求
  34. req = MyRequests()
  35. req.do_requests(method='get', url="http://47.100.175.62:3000/api/v1/topics")

编写测试用例

testcases/test_ddt/test_register.py

  1. """
  2. 测试注册的异常场景
  3. """
  4. from utils.myrequests import MyRequests
  5. myreq = MyRequests()
  6. def test_register():
  7. url = "/api/v1/user/register"
  8. bodydata = {
  9. "loginName": "17088889999",
  10. "password": "123456"
  11. }
  12. r = myreq.do_requests(method='post',url=url,json=bodydata)
  13. print(r.json())
  14. assert r.status_code == 200
  15. assert r.json()["message"] == "success"

执行代码测试用例
image.png

  1. pytest -s -v testcases\test_ddt\test_register.py

能够基本跑通用例