首页 > 编程 > Python > 正文

python+requests+unittest API接口测试实例(详解)

2020-02-16 01:41:14
字体:
来源:转载
供稿:网友

我在网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,将用例维护在文本或表格中,而没有说明怎么样去生成想要的用例,

问题:

测试接口时,比如参数a,b,c,我要先测a参数,有(不传,为空,整形,浮点,字符串,object,过短,超长,sql注入)这些情况,其中一种情况就是一条用例,同时要保证b,c的正确,确保a的测试不受b,c参数的错误影响

解决思路:

符合接口规范的参数可以手动去填写,或者准备在代码库中。那些不符合规范的参数(不传,为空,整形,浮点,字符串,object,过短,超长,sql注入)也可以准备在库中作为常量反复使用

主要实现的功能点:

1.api参数整理到dict中,方便组合参数生成用例

2.对生成的用例进行循环执行

3.封装些许代码便于使用和维护

源码分析:

canshuxinxi.py文件用来存放api接口信息。以dict形式存放,这样就可以API_ALL['登录接口'][url]这种方式去取,看起来较直观,知道取得是哪个接口的那部分信息。

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017-06-09 14:09# canshuxinxi.py# 接口信息API_ALL = {      '登录接口': {              'number': '1',              'url': 'http://www.baidu.com',              'leixing': 'post',              'head': {                    'aa': 'bb',                    'cc': 'dd',                    },              'canshu': {                    'username': 'Wbfxs001',                    'password': '111111Qq',                    'grant_type': 'password',                  },              'qiwang': {                    'code': 200,                    'name': 'Wbfxs001',                    },            },      '退出接口': {              'number': '1',              'url': 'http://www.baidu.com',              'leixing': 'get',              'canshu': {                    'username': 'Wbfxs001',                    'password': '111111Qq',                    'grant_type': 'password',                   }      }}

changliang.py文件用来存非常规(可能会让接口响应异常)参数,同理也是存放在dict中,方便维护,比如以后要加新的sql注入代码段,可以直接在后面添加

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017-06-09 14:09# changliang.py# 常用参数不传,为空,整形,浮点,字符串,object,过短,超长,sql注入objects1 = 'xxxx'objects2 = 'ssss'ZHCS = {      '为空': [''],      '整形': [10, 23, 44, 88, 99],      '浮点': [1.11, 2.342, -1.03],      '字符串': ['aaaa', 'bbbb', 'cccc','dddd'],      'object': [objects1, objects2],      '过短': ['1', '0'],      '超长': ['11111111111111111111111111111111111111111111111'],      'sql注入': [';and 1=1 ;and 1=2', ";and (select count(*) from sysobjects)>0 mssql", ";and 1=(select IS_SRVROLEMEMBER('sysadmin'));--"],     }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表