引言
在实际项目中,有测试环境、生成环境以及还有预发布环境,所以我们在设计业务场景的过程中,将网站的base_url
或者是域名抽离出来,作为全局变量,又或者存放一个配置文件来管理也是必须要做的一项。这对后续切换环境的维护会节省一定的时间成本。不然的话,我们如果要切换环境的,要一个个替换url
也是相当麻烦的工作。
1. 源码解析
在每一个测试用例的main
中都调用了一个test_start()
方法,我们可以暂时将这个方法看作是一个入口
然后我们 ctrl
+ 鼠标单击 看到test_start()
的源码:
如上图,我们可以看到测试用例的config
是传入到run_testcase
方法的TestCase
模型中
而实际项目中,teststeps
可能存在多个Step
,接下来我们来看一下Step
是如何被解析:
测试用例的step
可以看做是一个请求,那么请求是如何被访问的呢?首先通过调用__run_step
方法
在__run_step
再调用__run_step_request
:
接下来看到__run_step_request
有一个属性url
,它是使用了一个build_url
来对url
进行处理的,如下图:
build_url
的源码如下:
2. py
测试用例抽离url
首先我们需要在config
属性调用Config
类的base_url
方法,传入要访问的base_url
;
比如:http://www.woshipm.com/api2/user/followings/status
这里的base_url
指的是http://www.woshipm.com
,也就是路径之前的域名,也可以是IP
;
然后将teststeps
列表中Step
的.get()
的base_url
给去掉,httprunner
会自动拼接;
没有抽离base_url:
抽离后:
由此可以看到 .get()
的base_url
也就是域名http://www.woshipm.com
被提取到config
的base_url
3. yml
测试用例抽离url
直接将url
项的域名提取到config
子级的base_url
即可;
剪切url
的域名:
在config
添加一个base_url
标签:
4. base_url
抽离到.env
文件中
HttpRunner
创建项目时自动生成一个.env
文件,我们可以将base_url
放到.env
文件中,如下:
base_url=http://www.woshipm.com
然后在测试用例woshipm_get_author_test.py
文件中引用:
config = Config("testcase description").verify(False).base_url("${ENV(base_url)}")