实现原理
在请求之前,对请求的url进行替换。
- 需要二次封装requests,对请求进行定制化
- 将请求的结构体的url从一个写死的ip地址改为一个任意域名
- 使用一个env配置文件,存放各个环境的配置信息
- 然后将请求结构体中的url替换为env配置文件中个人选择的url
- 将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
<a name="m46oL"></a>#### 2 将请求的结构体的url从一个写死的ip地址改为一个任意域名```pythonimport requestsclass Api:def send(self, data:dict):data = {"method": "get","url": "http://testing-zuan:9999/demo1.txt","headers": None}# replace对url进行替换data["url"] = str(data["url"]).replace("testing-zuan", "localhost")r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])return r
测试代码:
from interface_test1.api import Apiclass TestSend:data = {"method": "get","url": "http://testing-zuan:8888/demo.txt","headers": None}def test_send(self):api = Api()res = api.send(self.data).textprint(res)
3 使用一个env配置文件,存放各个环境的配置信息
import requestsclass Api:env = {"dev": "localhost","test": "127.0.0.1"}def send(self, data: dict):# replace对url进行替换data["url"] = str(data["url"]).replace("testing-zuan", self.env["dev"])r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])return r
4 然后将请求结构体中的url替换为env配置文件中个人选择的url
import requestsclass Api:env = {"default": "dev","testing-studio":{"dev": "localhost","test": "127.0.0.1"}}def send(self, data: dict):# replace对url进行替换data["url"] = str(data["url"]).replace("testing-zuan", self.env["testing-studio"][self.env["default"]])r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])return r
5 将env配置文件使用yaml进行管理
将上述代码中的env提取到yaml中,这样就可以不用修改python代码,后面有改动只需要改yaml即可。
json生成yaml的方法:
import yamldef test_yaml():env = {"default": "dev","testing-studio":{"dev": "localhost","test": "127.0.0.1"}}with open("env.yaml", "w") as f:yaml.safe_dump(data=env, stream=f)
import requestsimport yamlclass Api:env = yaml.safe_load(open("./env.yaml"))def send(self, data: dict):# replace对url进行替换data["url"] = str(data["url"]).replace("testing-zuan", self.env["testing-studio"][self.env["default"]])r = requests.request(method=data["method"], url=data["url"], headers=data["headers"])return r
