实现原理

在请求之前,对请求的url进行替换。

  1. 需要二次封装requests,对请求进行定制化
  2. 将请求的结构体的url从一个写死的ip地址改为一个任意域名
  3. 使用一个env配置文件,存放各个环境的配置信息
  4. 然后将请求结构体中的url替换为env配置文件中个人选择的url
  5. 将env配置文件使用yaml进行管理

    代码演示

    1 需要二次封装requests,对请求进行定制化

    ```python import requests

class Api: def send(self, data:dict): data = { “method”: “get”, “url”: “http://127.0.0.1:9999/demo1.txt“, “headers”: None } r = requests.request(method=data[“method”], url=data[“url”], headers=data[“headers”]) return r

  1. <a name="m46oL"></a>
  2. #### 2 将请求的结构体的url从一个写死的ip地址改为一个任意域名
  3. ```python
  4. import requests
  5. class Api:
  6. def send(self, data:dict):
  7. data = {
  8. "method": "get",
  9. "url": "http://testing-zuan:9999/demo1.txt",
  10. "headers": None
  11. }
  12. # replace对url进行替换
  13. data["url"] = str(data["url"]).replace("testing-zuan", "localhost")
  14. r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])
  15. return r

测试代码:

  1. from interface_test1.api import Api
  2. class TestSend:
  3. data = {
  4. "method": "get",
  5. "url": "http://testing-zuan:8888/demo.txt",
  6. "headers": None
  7. }
  8. def test_send(self):
  9. api = Api()
  10. res = api.send(self.data).text
  11. print(res)

3 使用一个env配置文件,存放各个环境的配置信息

  1. import requests
  2. class Api:
  3. env = {
  4. "dev": "localhost",
  5. "test": "127.0.0.1"
  6. }
  7. def send(self, data: dict):
  8. # replace对url进行替换
  9. data["url"] = str(data["url"]).replace("testing-zuan", self.env["dev"])
  10. r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])
  11. return r

4 然后将请求结构体中的url替换为env配置文件中个人选择的url

  1. import requests
  2. class Api:
  3. env = {
  4. "default": "dev",
  5. "testing-studio":
  6. {
  7. "dev": "localhost",
  8. "test": "127.0.0.1"
  9. }
  10. }
  11. def send(self, data: dict):
  12. # replace对url进行替换
  13. data["url"] = str(data["url"]).replace("testing-zuan", self.env["testing-studio"][self.env["default"]])
  14. r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])
  15. return r

5 将env配置文件使用yaml进行管理

将上述代码中的env提取到yaml中,这样就可以不用修改python代码,后面有改动只需要改yaml即可。
json生成yaml的方法:

  1. import yaml
  2. def test_yaml():
  3. env = {
  4. "default": "dev",
  5. "testing-studio":
  6. {
  7. "dev": "localhost",
  8. "test": "127.0.0.1"
  9. }
  10. }
  11. with open("env.yaml", "w") as f:
  12. yaml.safe_dump(data=env, stream=f)
  1. import requests
  2. import yaml
  3. class Api:
  4. env = yaml.safe_load(open("./env.yaml"))
  5. def send(self, data: dict):
  6. # replace对url进行替换
  7. data["url"] = str(data["url"]).replace("testing-zuan", self.env["testing-studio"][self.env["default"]])
  8. r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])
  9. return r