上一篇讲了如何测试一个接口,接下来我们讲解多个接口又是怎么批量测试的!
1、需求
接口1:关键字搜索
接口2:机构列表
2、接口
接口文档如下:
3、代码
import requests #这个库是接口测试必不可少的,里边包含各种请求方式和返回值
import unittest #单元测试模块,作用是写用例,运行用例
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #避免打印中文乱码的
class Test_api(unittest.TestCase):
def setUp(self):
pass
def test_search(self): #第一条用例
'''keyword search''' #这里是用例名称,用途是批量运行用例时,能够知道这条用例是测什么的
self.url = 'http://******/api/search/keywords' #接口地址
self.param = {
'keyword' : '一带一路', #请求参数,这是个搜索图书的接口,想要搜索有关“一带一路”的书
'size' : 3
}
self.res = requests.get(self.url,params=self.param) #发送请求,这个不需要请求头,所以没有header
self.r = self.res.json() #把返回值转成json串
self.assertIn('一带一路',str(self.r))
#print (self.r)
def test_inst(self): #第二条用例
'''institution search list'''
self.url = 'http://******/api/institution/items'
self.param = {
'keyword' : '国家图书馆' #在机构列表搜索“国家图书馆”
}
self.res = requests.get(self.url,params=self.param)
self.r = self.res.json()
self.assertIn('国家图书馆',str(self.r))
#print (self.r)
def tearDown(self):
pass
if __name__=='__main__':
suite = unittest.TestSuite()
suite.addTest(Test_api('test_inst')) #第一条用例
suite.addTest(Test_api('test_search')) #第二条用例
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite) #因为已经把用例都添加进测试套件里了,所以,会同时运行
运行结果:
通过上述代码,我们可以看到在测试套件里边添加多条用例,就可以多条批量运行,但是有弊端,用例少得话,可以这样运行,但是一旦用例较多,那这个工作量就太大了,我们有一个解决方案:
可以把if下边得代码改了
把上边的代码,改成下边这样就OK了
综上所述,testcase就是写用例的位置,我们有多条用例的话,就把所有的用例都写着testcase里,一条用例一个方法,然后批量运行就可以了