最简单的接口测试

今天利用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()

接下来看下执行结果:
最简单的接口测试_第1张图片
写到这里,如果有个测试报告,是不是感觉高级点了呢,那么下面就来编写个测试用例报告吧
(注意,用例和报告分开写)

#新建报告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())

好的,接下来看看报告
最简单的接口测试_第2张图片
那么,一个简易的接口测试就完成了,不过这种做法的缺点就是每增加一个用例就要增加一个test方法,复用性很差。下期会给大家分享一个进阶版的接口测试,利用unittest+ddt+excel以及代码的封装,实现接口的自动化测试。想学请点击Unittest+ddt+excel实现接口自动化测试

你可能感兴趣的:(自动化测试)