实现原理
在请求之前,对请求的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地址改为一个任意域名
```python
import requests
class 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 Api
class TestSend:
data = {
"method": "get",
"url": "http://testing-zuan:8888/demo.txt",
"headers": None
}
def test_send(self):
api = Api()
res = api.send(self.data).text
print(res)
3 使用一个env配置文件,存放各个环境的配置信息
import requests
class 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 requests
class 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 yaml
def 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 requests
import yaml
class 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