码迷,mamicode.com
首页 > 编程语言 > 详细

【接口自动化】Python+Requests接口自动化测试框架搭建【一】

时间:2020-07-16 18:14:02      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:lse   框架搭建   init   get   ati   cep   demo   img   pre   

公司项目启用新框架,前后端分离,所以接口测试成为测试工作中不可缺失的一个环节,现在将从0开始搭建接口自动化测试框架的路程,一步步记录下来。

开发语言我们采用Python+第三方库Requests,测试框架使用Unittest。

前期在网上看了很多相关接口自动化的视频,都是采用Python+Requests,看了视频感觉还是比较方便的。在Pycharm中新建一个工程,新建demo.py

#!/usr/bin/env python
# coding=utf-8

import requests
import json


class RunMain:
    def __init__(self):
        pass

    @staticmethod
    def send_post(url,cookies,headers,params=None):
        try:
            res = requests.post(url=url,cookies=cookies,headers=headers,data=params)
            print("请求地址:", res.url)
            print("返回状态:", res.status_code)
            print("响应时间:", res.elapsed)
            try:
                print("响应数据格式为:JSON")
                print("响应数据:", json.dumps(res.json(), sort_keys=True, indent=2, ensure_ascii=False))
            except json.decoder.JSONDecodeError:
                print("响应数据格式为:文本")
                print("响应文本:", res.text)
            return res
        except Exception as msg:
            return msg

    @staticmethod
    def send_get(url,cookies,headers,params=None,):
        try:
            res = requests.get(url=url,cookies=cookies,headers=headers,params=params,)
            print("请求地址:",res.url)
            print("返回状态:",res.status_code)
            print("响应时间:",res.elapsed)
            try:
                print("响应数据格式为:JSON")
                print("响应数据:", json.dumps(res.json(), sort_keys=True, indent=2, ensure_ascii=False))
            except json.decoder.JSONDecodeError:
                print("响应数据格式为:文本")
                print("响应文本:", res.text)
            return res
        except Exception as msg:
            return msg

    def run_main(self, url, method,cookies=None,headers=None,params=None):
        if method == GET or G:
            print(请求类型: GET)
            res = self.send_get(url,cookies,headers,params)
            return res
        elif method == POST or P:
            print(请求类型:POST)
            res = self.send_post(url,cookies,headers,params)
            return res
        else:
            print(不支持的请求方式!)

其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS,可以在上述run_main中自助扩展,因公司主要接口为get/post,所以此处不再继续编写。

测试一下我们的代码:

 url = "http://apis.juhe.cn/mobile/get"
    headers={
        "Content-Type":"application/json"
    }
    params = {
        "phone": "13800000000",
        "dtype": "json",
        "key": "*****" //密匙
    }
    RunMain().run_main(url=url, method=G,headers=headers, params=params)

我们使用免费接口聚合数据进行测试,测试手机归属地查询。

技术图片

 

 运行代码后可以返回手机号码归属地、区号、运行商、邮政编码等信息。

在demo.py代码中:

json.decoder.JSONDecodeError

这个声明异常的作用,是为了防止get或post返回值为非json而引起的异常,出现此错误时证明返回值为非json格式,即显示文本内容。

 

【接口自动化】Python+Requests接口自动化测试框架搭建【一】

标签:lse   框架搭建   init   get   ati   cep   demo   img   pre   

原文地址:https://www.cnblogs.com/GongYuTest/p/13322747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!