Web API调用(查询手机归属地接口)+unittest封装+接口自动化测试

一、API 和 Web API

API(Application Programming Interface)应用程序编程接口重点是接口"I".

Web API是一个一URL 为控件的接口,对于非程序员来说,最常见和最容易访问的是REST和RESTful API

普通的URL会返回在浏览器中设计精美的页面和内容,而Web API URL会返回一些纯粹的基础信息,没有装饰的纯文本块。
Web API是专为电脑阅读而设计的,是一种去除所有你不关心的外部可视化界面并获取数据的方法。

二、API的调用和使用

以聚合数据网站为例——
国内聚合网站查找手机归属地查询API
聚合网站API调用
产品功
根据手机号手机号前7位,查询手机号码归属地信息(省份、城市、运营商 )
聚合网站,API每日免费调用100次
在这里插入图片描述
API文档手机归属地查询API
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

三、python自动化接口测试

需求分析:手机归属地查询
用例设计
测试程序
执行程序
提交测试结果

  • 对资源请求数据函数和测试用例TestCase进行封装;
  • 将测试用例依次写入测试套件TestSuite;
  • 通过TextTestRunner的run执行测试操作并返回测试结果

资源请求和测试用例封装

import requests
import unittest

class Test_Mobile(unittest.TestCase):
    
    def request_data(self,phone):        # 封装资源请求方式
        url = 'http://apis.juhe.cn/mobile/get'
        data = {
            'key':"4391b7dd8213662798c3ac3da9f54ca8",  # 必填 int型
            'phone': phone,                            # 必填 string型
            # 'dtype':"xml"          # 非必填 string型, 返回数据的格式,xml或json,默认json
        }
        self.res = requests.get(url, params=data)
        if self.res.status_code ==200:
            return self.res
        else:
            print('Request API Error!')
    def test_1(self):                   ###测试案例1
        self.request_data('1882203')
        print('\n',self.res.text)    # {"resultcode":"200","reason":"Return Successd!","result":{"province":"天津","city":"天津","areacode":"022","zip":"300000","company":"移动","card":""},"error_code":0}
        print(self.res.json())       # {'resultcode': '200', 'reason': 'Return Successd!', 'result': {'province': '天津', 'city': '天津', 'areacode': '022', 'zip': '300000', 'company': '移动', 'card': ''}, 'error_code': 0}
        print(type(self.res.json()))   # <class 'dict'>
        res_dict1 = self.res.json()
        # 自动化 结果校验 加入断言进行判断并返回结果
        province = res_dict1['result']['province']
        self.assertEqual(province,'天津',msg='%s != %s'%(province,'天津'))

    def test_2(self):                  ###测试案例2
        self.request_data('1586128')
        print('\n',self.res.json())
        res_dict2 = self.res.json()
        # 自动化 结果校验 加入断言进行判断并返回结果
        resultcode = res_dict2['resultcode']
        self.assertEqual(resultcode,'201',msg='%s != %s'%(resultcode,'201'))

if __name__ == '__main__':
    unittest.main()

一个个加载测试案例的代码

import unittest
from TestCase_Demo import Test_Mobile
import HTMLTestRunner

testsuite = unittest.TestSuite()
# 一个一个加载测试用例
testsuite.addTest(Test_Mobile('test_1'))
testsuite.addTest(Test_Mobile('test_2'))
with open('Unittest_Requests_test\\result1.txt','a') as f:
    runner = unittest.TextTestRunner(stream = f, verbosity=2)
    runner.run(testsuite)

或者 一次加载全部测试用例

import unittest
from TestCase_Demo import Test_Mobile
import HTMLTestRunner
testsuite = unittest.TestSuite()
# 一次加载全部测试用例
testload  = unittest.TestLoader()
case = testload.loadTestsFromTestCase(Test_Mobile)
testsuite.addTest(case)
with open('Unittest_Requests_test\\result2.html','wb') as f:
    runner = HTMLTestRunner.HTMLTestRunner(stream = f,
                                           title = "手机归属地查询自动化接口测试报告",
                                           description='用例执行结果')
    runner.run(testsuite)

此处python3 + pycharm中使用 HTMLTestRunner 出现问题,需要在sitepackages的Lib中添加HTMLTestRunner.py文件和对内部程序作部分修改

邮件发送测试执行结果

import smtplib
from email.mime.text import MIMEText
from email.header import Header

server_host = 'smtp.qq.com'
port = 25
username =input('请输入发送人邮箱:')  # 
password = input('邮箱授权码:') #
from_addr  = username
to_addr = input('请输入收件人邮箱:')

subject = '手机归属地查询自动化接口测试结果报告'
with open('Unittest_Requests_test\\result2.html','r',encoding='utf-8') as f:
    content = f.read()
msg = MIMEText(content,'html')             ## 此处读取的是html
msg['Subject'] = Header(subject)
msg['From']  = Header(from_addr)
msg['To'] = Header(to_addr)

smtp = smtplib.SMTP(server_host)         # 实例化
smtp.connect(server_host,port)           # 指定连接的服务器地址和端口
smtp.login(username,password)            # 登陆
try:
    smtp.sendmail(from_addr,to_addr,msg.as_string())
    print('Success!')
except:
    print('Fail!')

邮箱收到的测试结果是——

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值