接口测试学习

接口测试

  • 介绍

(1)为什么要做接口测试?

  1. 尽早的进入项目中,后端处理好逻辑后就可以介入测试。
  2. 发现的问题更加的全面。
  3. 测试场景很自由很安全。
  4. 自动化测试:接口自动化、app自动化、ui自动化

(2)什么是接口呢?

接口:提供数据服务和交互的一种形式、通道;接口是有规范的。

前端操作传递通过接口传递到后端,后端返回结果通过接口传达到前端。

接口规范:网络协议://ip:port/path?args=’参数’&args=’参数’

ip地址:对应多个域名,cmd dos界面输入ping+域名可查看。

请求方式:get(一般用于查询)、post(一般用于提交数据)、put(一般上传下载)、delete(一般用于删除)

接口文档:这个接口,用什么方式发请求。(没有接口文档可以自己去抓包)

(3)接口测试的步骤

  1. 接口地址           登录地址
  2. 接口参数  账号+密码
  3. 发请求,请求方式  发请求
  4. 响应内容回来      响应(登录成功or失败)
  1. 什么是接口测试?

模拟接口发送请求,请求回来的内容是正确的还是错误的。

  • 用代码or工具去做接口测试

测试用接口文档:NowAPI 数据接口服务商

简单代码理解

import requests
#接口地址
 url='http://api.k780.com'
#接口参数
data={ 'app' : 'weather.history',
  'weaId' : '1',
  'dateYmd' : '20220101',
  'appkey' : '66717',
  'sign' : 'xxx,
  }
#发送请求
res =requests.get(url=url,params=data)
#响应内容
print(res.json())

接口测试后,响应回来的结果是不是自己想要的?返回”success”

'''1、接口地址            登录地址
2、接口参数           账号+密码
3、发请求,请求方式     发请求
4、响应内容回来              响应(登录成功or失败)
'''

import requests

#接口地址
url='http://v.juhe.cn/historyWeather/province'
#接口参数
data={
  'key':'xxx'
  }
#发送请求
res =requests.get(url=url,params=data)
#响应内容
#print(res.json())
#预期结果
exmsg='查询成功'
#实际结果 取success的值
sjmsg=res.json()['reason']
#对比
if exmsg == sjmsg:
    print("用例成功")
else:
    print("用例失败")

上面写法不友好,只是基础理解。

公司:要求复用性、封装好

数据库

扩展性:生成测试报告,html css js 发送邮件,第三方插件等

用unittext框架改造一下:单元测试框架

好处:管理用例,生成测试报告,断言

#unittext框架改造一下,单元测试框架,
import unittest
import requests
from ddt import data,ddt,unpack,file_data
@ddt
class TestCase(unittest.TestCase):
    #用例执行之前要做的事情
    #链接数据库等等
#    def setUp(self) -> None:
 #       pass
    #用例执行之后要做的事情  关闭数据库,清理数据库
 #   def tearDownClass(cls) -> None:
#      pass
    #测试用例,一个test代表一条用例, 数据不同,数据不写死
    #数据如何传输?数据驱动:测试代码和测试数据分离
    #改变数据就能改变自动化执行,data专门放数据
    #unpack解包
    @data(['xxx])
    @unpack
    def test_LoginSucess(self,key):
        url = 'http://v.juhe.cn/historyWeather/province'
        data = { 'key':key
                }
        res = requests.post(url, data=data)
        exmsg = '查询成功'
        sjmsg = res.json()['reason']
        self.assertEqual(exmsg, sjmsg)
    #执行用例
    if __name__=='__main__':
        unittest.main()

使用yaml文件执行用例

  1. 安装

python3.X只能使用pip install pyyaml 来安装。若使用pip install yaml会报错误

  1. 使用注意冒号后面要有空格

yaml基本语法

    1.  yaml的基本格式是 k: v (注意:冒号后面有一个空格,而且这个空格是必须的)

        yaml中的字符串默认不用加双引号或者单引号,如果加了双引号或者单引号,则单引号和双引号在yaml中有不同的用法,

        ""双引号不会转义字符串里面的特殊字符:特殊字符会作为本身想表达的意思

       例:"张三\n李四"  会表示出 张三  然后是一个换行   然后才是 李四

        '' 单引号会转义字符串里面的特殊字符

        例:'张三\n李四'  表示出来的就是一个字符串   张三\n李四

2.使用缩进表示层级关系

3.缩进时不允许使用Tab键,只允许使用空格。

4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

5. 大小写敏感

 第一种写法:

                        user:

                              userName: 王晓明

                               userAge: 20

                                userSex: 男

第二种写法(行内写法):

                        user: {userName: 王晓明,userAge: 20,userSex: 男}

3.数组、集合(list、set)yaml语法中数组与集合的表现形式是一样的。

    用-表示数组中的一个元素

                       studentArray

                             -student1

                             -student2

                             -student3

第二种写法(行内写法):

                 studentArray: [student1,student2,student3]

  1. 结合使用

Yml文件内容:

-
  date: '1/1'
  key: 'ae3f7ade1b5ee8b0b6476e5c495b35cf'
-
  date: '1/2'
  key: 'ae3f7ade1b5ee8b0b6476e5c495b35cf'
-  
  date: '1/2'
  key: 'ae3f7ade1b5ee8b0b6476e5c495b35cf1'

代码内容:

import requests
import unittest
from ddt import data,ddt,unpack,file_data
@ddt
class Test(unittest.TestCase):
    #def setUp(self) -> None:
     #   pass'''
   # #def tearDownClass(cls) -> None:
    #    pass'''

    #@data(['1/1','xxx'],['1/2','xxx])
    #@unpack
    # #yaml去数据放到业务逻辑
    @file_data('demo.yaml')
    def testdemo(self,date,key):
        url='http://v.juhe.cn/todayOnhistory/queryEvent.php'
        data ={
            'date':date,
            'key':key
        }
        qwmsg = 'success'
        es=requests.get(url,params=data)
        print(es.json())
        exmsg=es.json()['reason']
        self.assertEqual(qwmsg,exmsg)
    if __name__ =='__main__':
         unittest.main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值