今天利用unittest+requests来分享一个简单的接口测试,下面开始吧!
1、接口测试的几个基本元素就是url,method(常用的请求方式就是get和post),data以及headers,只有先拿到这几样东西,我们才可以进行下一步的工作
2、测试的意义就是想知道符不符合预期,所以要设置断言
3、为了更直观看出运行结果,我们用HTMLTestRunner编写报告
接口测试的通用模板一般是:
import requests
res=requests.method(url=url,data=data,headers=header) #获取response响应的内容
Apitest.py放在TestCase文件夹下
# Apitest.py
import unittest
import requests
import json
class TestApi(unittest.TestCase):
#获取登录的cookies
cookies=requests.post(url='服务器地址/api/client/login',data={'openid': 1234, 'open_token': 1234}).cookies
def setUp(self) :
print("接口测试开始")
def test_postapi(self):
print('这是post请求')
url='服务器地址/api/client/login'
data={'openid': 1234,'open_token': 1234}
res = requests.post(url=url, data=data).json() #res的结果是:{'ok': True, 'result': {'msg': 'ok'}}
#设置断言
self.assertTrue(res['ok'], 'login接口报错了')
def test_getapi(self):
print('这是get请求')
url='服务器地址/api/client/info'
res =requests.get(url=url,cookies=self.cookies).json() #res的结果是:{'ok': True, 'result': {'lottery_chance': 3, 'is_finish_task_1': 0, 'is_finish_task_2': 0, 'is_card_lottery': 0, 'is_use_invite_lottery': 0, 'is_win_invite_lottery': 0, 'card_list': [], 'invitee_list': [], 'time': 1569306427889}}
#设置断言
self.assertTrue(res['ok'],'client/info接口报错了')
def tearDown(self):
print("接口测试结束")
if __name__=='__main__':
unittest.main()
接下来看下执行结果:
写到这里,如果有个测试报告,是不是感觉高级点了呢,那么下面就来编写个测试用例报告吧
(注意,用例和报告分开写)
#新建报告Report.py
from HTMLTestRunner import HTMLTestRunner
import unittest
import os
current_path=os.getcwd()
case_path=os.path.join(current_path,"TestCase")
report_path=os.path.join(current_path,'Report')
def load_all_case():
discover=unittest.defaultTestLoader.discover(case_path,pattern="Apitest.py")
return discover
if __name__=='__main__':
report_title='测试用例报告.html'
result_path=os.path.join(report_path,report_title)
desc='两个用例报告'
with open(result_path,'wb') as report:
runner=HTMLTestRunner(stream=report,title=report_title,description=desc)
runner.run(load_all_case())
好的,接下来看看报告
那么,一个简易的接口测试就完成了,不过这种做法的缺点就是每增加一个用例就要增加一个test方法,复用性很差。下期会给大家分享一个进阶版的接口测试,利用unittest+ddt+excel以及代码的封装,实现接口的自动化测试。想学请点击Unittest+ddt+excel实现接口自动化测试