使用python实现简单接口测试实例总结

访客 阅读:181 2021-09-05 16:25:56 评论:0
本文章主要介绍了使用python实现简单接口测试实例,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

说明:
此次接口测试实例是基于天气API
所需相关

  • python3
  • unittest框架
  • requests模块

测试API

  • 测试的API为:天气API
  • 接口URL:IT虾米网
  • 请求方式GET
  • 参数:city为各城市名称
  • 接口返回格式
{ 
    "status": 200, 
    "data": { 
        "wendu": "29", 
        "ganmao": "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。", 
        "forecast": [ 
            { 
                "fengxiang": "南风", 
                "fengli": "3-4级", 
                "high": "高温 32℃", 
                "type": "多云", 
                "low": "低温 17℃", 
                "date": "16日星期二" 
            }, 
            { 
                "fengxiang": "南风", 
                "fengli": "微风级", 
                "high": "高温 34℃", 
                "type": "晴", 
                "low": "低温 19℃", 
                "date": "17日星期三" 
            }, 
            { 
                "fengxiang": "南风", 
                "fengli": "微风级", 
                "high": "高温 35℃", 
                "type": "晴", 
                "low": "低温 22℃", 
                "date": "18日星期四" 
            }, 
            { 
                "fengxiang": "南风", 
                "fengli": "微风级", 
                "high": "高温 35℃", 
                "type": "多云", 
                "low": "低温 22℃", 
                "date": "19日星期五" 
            }, 
            { 
                "fengxiang": "南风", 
                "fengli": "3-4级", 
                "high": "高温 34℃", 
                "type": "晴", 
                "low": "低温 21℃", 
                "date": "20日星期六" 
            } 
        ], 
        "yesterday": { 
            "fl": "微风", 
            "fx": "南风", 
            "high": "高温 28℃", 
            "type": "晴", 
            "low": "低温 15℃", 
            "date": "15日星期一" 
        }, 
        "aqi": "72", 
        "city": "北京" 
    }, 
    "message": "OK" 
} 

实例

用例设计

测试场景 用例描述 期望结果
正常参数 传入正常的参数 返回:Success提示信息。
异常参数 传入数字,特殊字符等 返回:Check the parameters提示信息。
参数为空 不传参数 返回:Check the parameters提示信息。

代码实现

import unittest 
import requests 
from urllib import parse 
from time import sleep 
 
class WeatherTest(unittest.TestCase): 
    def setUp(self): 
        # 接口地址 
        self.url = 'https://www.sojson.com/open/api/weather/json.shtml' 
 
        # 代理设置,避免ip被封 
        # 根据协议类型,选择不同的代理 
        proxies = { 
            "http": "http://123.134.156.279:8888", 
            "https": "http://123.134.156.279:8888", 
        } 
 
    def test_weather_sh(self): 
        '''测试上海天气''' 
 
        data = {'city': '上海'} 
        # 中文需要把传入的参数对转换为url标准格式 
        city = parse.urlencode(data).encode('utf-8') 
        # 发送请求 
        r = requests.get(self.url, params=city) # 如果需要代理再加个参数proxies 
        result = r.json() 
        #断言 
        self.assertEqual(result['status'], 200) 
        self.assertEqual(result['message'], 'Success !') 
        self.assertEqual(result['city'], '北京') 
        # 设置间隔时间,避免ip被封 
        sleep(3) 
 
    def test_weather_param_error(self): 
        '''异常参数''' 
 
        data = {'city': '343sad'} 
        r = requests.get(self.url, params=city) 
        result = r.json() 
        # 断言 
        self.assertEqual(result['message'], 'Check the parameters.') 
        sleep(3) 
 
    def test_weather_param_null(self): 
        '''参数为空''' 
 
        r = requests.get(self.url) 
        result = r.json() 
        # 断言 
        self.assertEqual(result['status'], 400) 
        self.assertEqual(result['message'], 'Check the parameters.') 
        sleep(3) 
 
if __name__ == '__main__': 
    unittest.main() 

好了,一个简单的接口测试实例就先到这了。通过代码可以发现很多代码都是重复的,其实还可以继续优化,实现数据驱动。等下次再分享吧。


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

关注我们