蒽 ,业务就是这样,目前是通过 IP 来请求的,好像暂时也没什么问题,后面再观察下
蒽 ,不能通过 hosts 方式, 只能通过配置文件或者标识来区分不同的 IP,只能 IP 发起请求, 同时运行多个任务的话,相当于多个线程,这样是不会相互有影响的
我们有二个环境, 测试环境和灰度环境, 测试环境有几十个域名, 就好比私有化的那种部署,测试的时候大家都要配置所有域名测试, 那对应的接口肯定也是通过域名来请求的,所以就会存在这个问题,之前也有咨询过开发,开发建议不要用 IP 直接访问,我们没有固定的 IP 的,IP 和域名会随时变的(部署到哪个服务器就哪个服务器)
其实我就是想知道,同一套代码,一台机器,怎么做到区分多个环境同时执行,目前我用的是切换 host 方式,那自然是 A 任务在运行时, B 任务因为环境不同(B 任务域名和 A 任务域名一样,但 IP 不一样)就要等 A 完了才能执行,目前想到的就是只能通过 IP 隔离
蒽 ,你看我 #7 的回复,准确来说是代码没有做到环境隔离吧,直接用 IP 请求不用域名不知道会不会出问题
您好, 工具采用的是 python+requests 库自己二次封装,你说到重点了,我目前能想到的就是利用 requests 的 dns 解释,例如:
def dns_resolve(env, domain): # 域名解析函数,解析成功IP将追加到iplist
try:
hosts = {
"A": { # A环境
"banana.cc.com": '11.112.1.1'
} ,
"B":{ # B环境
"banana.cc.com": '12.11.10.28'
}
}
if domain in hosts:
return hosts[env][domain]
except Exception as e:
print("dns resolver error. %s" % e)
return
调用:
r = requests.request('post', 'https://' + dns_resolve("A", domain) + _url, data=body, headers=headers(), verify=False)
这样我就可以不需要配置 host 了,直接通过进程来隔离了,有时 host 可能有很多几十个, 不知道还有没有其他的更好的方法
这种做法我也试过, 目前是没发现有什么问题, 只是不清楚这种方式会带来什么影响?
既然是自动化,如果出现环境要排队的情况,总感觉有点浪费时间
这个问题我之前也在研究, 没研究成功,后面就把登录模块用 JS 翻译了一遍, 这能直接访问 python 就叼炸天了, 无所不能呀,感谢分享。
看了这么多人回复,就你说得全面
最近我一直在看你写的源码,工具的思路确实是不错,有一个问题想请教个,就是每个测试套件对应的配置文件(也就是测试环境)可能会不一样,但有时我们部署在同一台机器上面, 如果启动 A 套件用 A 环境,启动 B 套件时,那 A 套件的用例就会受影响,因为 host 变量了,这种不知道 httprunner 本身是否能处理? 我目前自己工具用的是自定义 DNS 解析,这样就不需要配置本机的 host 了。
httprunner 提供的断言估计有些满足不了,这些可以自己去开发吗?
这么好的项目,必须打赏,作者加油~~
坑是有,但目前项目中
我觉得用得还算稳定
实践一天时间是不是不够
快出 Python 版本了