第二篇提到了接口自动化大概意思:从excel自动读参数和预期结果,做接口测试并断言,生成excel测试报告。这篇写一下excel里面怎么写,并且用代码找到文件,怎么读内容。具体读出来怎么用放下一篇继续写。
先看excel里面,接口我用的还是京东万象的接口,一个免费的天气预报查询。
这个excel名称是TestData.xls。
第一个标签那个初始化数据没什么用,如果有公用的东西也可以写那里,像url什么的。第二个标签天气预报接口这里,前两行也是根据自己心情写,可以没有。最重要的是这几个城市名称。返回状态,期望这都是预期结果,根据自己实际情况写。可以只写一个预期结果,也可以写多个,在后面接口测试时候读取会有点区别。
再看一下excel放的位置:
getpath.py代码就是找TestData.xls路径的代码,也包括生成的测试报告放的位置,下面testreport里面放的就是测试报告。数据和报告不在同一个文件夹,这俩读的时候稍微有一点别。
下面看一下读的代码:
import os
import time
def GetTestDataPath():
ospath=os.path.dirname(os.path.abspath(__file__))
return os.path.join(ospath,"TestData.xls")
def GetTestReport():
now=time.strftime("%Y-%m-%d-%H-%M-%S-",time.localtime(time.time()))
ospath=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
return os.path.join(ospath,"day6\\testreport",now+"TestReport.xlsx")
读文件都需要os这个包,第一个是读数据的,第二个是测试报告的路径,测试报告记录了这个测试报告是什么时候生成的,这样每次生成的报告命名都不一样,防止把旧的测试报告清除。
os.path.dirname(os.path.abspath(__file__))这段意思就是获取当前文件夹的路径,如果重复写了两遍,就是获取当前文件夹的上一层路径;写三遍就是获取上两层的路径,依此类推。代码和数据在同一个文件夹和不同文件夹区别就像下面,在文件名前面加上路径。方便演示效果,代码指的路径已经跳到day6外面去了。
getpath.py这里写这些代码就可以了,下面看一下读数据的效果。
import xlrd
testdata=xlrd.open_workbook(GetTestDataPath())
table=testdata.sheets()[1]
city1=table.cell(2,0).value
city2=table.cell(3,0).value
status=int(table.cell(2,1).value)
print (city1)
print (city2)
print (status)
想读excel需要xlrd包,这段代码放在getpath.py就可以看到效果,第三行是读取第二个标签页,就是天气预报接口那页。第4、5、6行分别取两个城市和北京后面的那个返回状态。
测试完把下面代码注释掉,不需要这部分。