Python接口自动化框架

Python自动化框架

Request库实战

一.接口文档规范

包含:

  • 接口名
  • 接口描述
  • 请求方式
  • 返回格式
  • 请求参数说明(名称,必填,类型,说明)
  • 返回参数说明(名称,类型,说明)
  • json返回示例

二.Mock接口服务开发实战

[
   {
       "description":"post_form请求和响应,模拟登录接口",
       "request":
       {
           "headers":{"content-type":"application/x-www-form-unlencoded"},
           "method":"post",
           "uri":"/login",
           "forms":{"username":"xiaoqiang","pws":"123123"}
       }
       "response":
       {
           "json":{"error_code":0,"reason":"successed","username":"xiaoqiang","checkstatus":"on"}
           "status":200
       }
   },
   
   {
       ...
   }
]

三.Request库语法格式总结

Request是python中强大的请求库,基本所有的请求都是用它来完成

1.下载安装和导入Requests库
pip install requests
import requests
2.get请求
r=requests.get(url,params=None,headers=None,cookies=None,auth=None,timeout=o.oo1)

  • url:请求地址,必填(其他都是选填)
  • params:请求参数
    • 可以是字典
    • 可以是json字符串
    {'q': 'python', 'cat': '1001'}
    
    • 字典字符串都会被自动编码发送到url
    • 可以是字节(必须是ascii编码以内)
  • headers:请求头.一般有两种模式
    • form格式
    'Content-Type':'application/x-www-form-urlencoded'
    
    • json格式
    'Content-Type':'application/json'
    # 如果是该格式,需要在请求header里加上
       + cookies 
       + auth: 身份认证
       + timeout:请求超时时间,单位second
    
  • cookie: 有就放,没有就不放
3.post请求
r=requests.post(url,data=none,headers=none,cookies=none,auth=none,timeout=0.01)
  • 带数据的post
    • json是以字符串在python中存在,但str()和json.dumps()有区别
     a = {'a': 1, 'b': 2}
     b = {"a": 1, "b": 2}
     stringA = str(a)
     stringB = str(b)
     jsA = json.dumps(a)
     jsB = json.dumps(b)
     print(stringA==stringB) #真,stringA={'a': 1, 'b': 2}
     print(stringA==JSA) # 假,jsA={"a": 1, "b": 2}
     ## string和js的区别在于引号,json.loads(<str>)参数对象的字符串,除了要满足字典类型的格式外,所有的字符串对象必须是双引号。
    
    • data为字典类型
    data = {'key1':'value1','key2':'value2'} 字典类型
    r = requests.post(url,data=data) #data须是字典类型
    
    • data为字符串类型
    data = {'key1':'value1','key2':'value2'}
    data = json.dumps(data)#将json格式转化为str类型
    r = requests.post(url,data=eval(data))
    

`

  • 带headers的post
headers = {"User-Agent":"test request headers"}
r = requests.post(url,headers=headers)
  • 带json的post
data = {
    "sites": [
                { "name":"test" , "url":"www.test.com" },
                { "name":"google" , "url":"www.google.com" },
                { "name":"weibo" , "url":"www.weibo.com" }
    ]
}
r = requests.post(url,json=data)
  • 普通文件上传
files = {
            'file':open('test.txt','rb')
        }

r = requests.post(url,files=files)
  • 流式上传
with open( 'test.txt' ) as f:
    r = requests.post(url,data = f)

若有其他put ,delete 接口,使用方法只要在import requests 的前提下把 get 或者post改成put即可,其余不
https://www.cnblogs.com/puresoul/p/7488700.html

4.requests返值
  • r.status_code 返回状态码
  • r.reason 返回具体解释
  • r.headers 返回响应头
  • r.text 返回响应对象(返回了json类型,在python中无法使用)
    • 返回值是str类型
    • 取返回值中的参数时
    name = re.findall(r'"name":(.+?),"age"',str(r.text))#返回的的lessonid是list类型,还要进行转化
    
  • r.content 返回响应对象(bytes,图片,文件,中文显示为字符)
    • 返回bytes类型
  • r.json()响应转换为python可识别的类型,供后续代码使用
    • 返回值是字典类型
    • 取返回值
    lessonId=r.json()['lessonId']
    

四.接口层框架

1.基本组成
  • 主程序入口
  • 遍历用例 (发送请求,接收响应,判断结果)
  • 保存结果(生成报告)
  • 发送email
  • 贯穿log日志
2.项目根目录
  • main.py–(不涉及具体实现,而是主要的通用执行)
  • src
    • 1.run_testcase.py (完成可执行的遍历)
    • 2.interface_test.py(请求的发送,响应的接收和结果的判断保存)
    • 每次执行1就去遍历,每遍历1个就调用2,进行请求的响应和结果保存判断
  • log
  • testcase
  • testdata
  • report
  • commons
  • libs
4.流程图

image

3.关联参数
4.日志log
5.发送邮件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值