接口自动化环境搭建-Python Request + Unittest


前言

使用python搭建一个接口自动化的框架,主要实现的功能如下:

  • 在Excel中编写接口测试用例,代码读取去执行
  • 执行接口测试用例后, 自动生成测试报告
  • 生成测试报告后, 自动发送邮件到邮箱

下面案例可供参考

一、前期准备

  • python3安装
  • Excel中编写接口测试用例

二、搭建环境

1. 创建项目目录

	demoauto

在这里插入图片描述

2. 创建一个cases目录,管理所有的case

这个目录可以存放所有的测试脚本(针对测试用例的断言)

在这里插入图片描述

3. 找一个测试接口,编写测试脚本

例子:

https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=XXXXXX

这是一个公共接口,可以随便使用

在这里插入图片描述

  1. 在cases文件目录下,创建一个py文件,以test开头
  2. 编写测试脚本

在这里插入图片描述

import unittest
import requests

class TestMobileTelSegment(unittest.TestCase):

    def sendRequests(self):
        self.url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm"
        self.method = "get"
        self.params = "tel=157XXXXXXX87"
        res = requests.request(self.method,self.url,params =self.params)
        print(res.text)
        return res.text

    def test01case(self):
        res = self.sendRequests()
        expect_result = '''__GetZoneResult_ = {
                                mts:'15XXXXX',
                                province:'云南',
                                catName:'中国移动',
                                telString:'15XXXXX987',
                                areaVid:'3XX5',
                                ispVid:'3XXX39',
                                carrier:'云南移动'
                            }'''
        self.assertTrue(res.replace("\n",""), expect_result.replace("\n",""))


if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestMobileTelSegment("test01case"))
    runner = unittest.TextTestRunner(verbosity=3)
    runner.run(suite)

小结:

1、Unittest是python自带的模块,拥有断言的功能。使用Unittest作为测试断言,必须引入unittest模块,并让测试类继承Unittest.Testcase

2、执行测试用例可以把所有测试用例添加到一个suite里,然后去执行

在这里插入图片描述
如果在这个类中再编写一个test02case,则只需再runner前一行,再添加一句:suite.addTest(TestMobileTelSegment(“test02case”))

4. 抽离公共方法 - 发送请求

当编写大量测试脚本的时候,每一个接口都要用到发送请求,所以可以把发送请求的接口抽离出来,编写为一个公共方法
  1. 创建common目录,存放所有的公共类
  2. 编写脚本
    在这里插入图片描述
    sendrequest.py
import requests as rq


class SendRequest:
    def send_request(self, url, method, params="", headers=""):
        res = rq.request(method, url, params=params, headers=headers)
        return res.text

修改test_mobile_tel_segment.py

import unittest
import requests
from demoauto.common.sendrequest import SendRequest

class TestMobileTelSegment(unittest.TestCase):

    def test01case(self):
        #测试的数据
        url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm"
        method = "get"
        params = "tel=15XXXXXXX87"

        #发送请求
        res = SendRequest().send_request(url, method, params)

        #断言
        expect_result = '''__GetZoneResult_ = {
                                mts:'1XXXXX9',
                                province:'云南',
                                catName:'中国移动',
                                telString:'15XXXXXX7',
                                areaVid:'30515',
                                ispVid:'32XXXX9',
                                carrier:'云南移动'
                            }'''
        self.assertTrue(res.replace("\n",""), expect_result.replace("\n",""))


if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestMobileTelSegment("test01case"))
    runner = unittest.TextTestRunner(verbosity=3)
    runner.run(suite)

小结:

1、提取了公共方法后,使用时需要引入

5. 抽离测试数据 - 读取Excel

用Excel编写测试用例,代码读取测试数据、请求信息后执行

在这里插入图片描述

  1. 创建一个目录,存放excel的用例
  2. 公共方法:读取Excel
    在这里插入图片描述
import os

import openpyxl as ox
#获取当前路径:到common结束
#path = os.path.abspath(os.path.dirname(__file__))
#path = os.getcwd()

#获取当前路径的上一层路径:到demoauto
path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))

class ReadExcel():
    def get_workbook(self, filename):
        #测试用例实际的路径
        xlsPath = os.path.join(path, 'testfile', filename)
        print(xlsPath)
        # 打开测试用例
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

影已落流水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值