python requests+unittest+BeautifulReport实现自动化接口测试的简单实现

2022-07-22 15:28:38 浏览数 (1)

大家呢也是了解了python requests的基本用法了,那么咱们就应用上单元测试框架unittest还有BeautifulReport简单的实现一下自动化的接口测试

一、搭建框架

咱们也是看一下图,需要创建的文件夹以及文件都在这里了,我这边用的pycharm,其他的开发工具也都是差不多的哈,创建完之后咱们开始往里面写代码

咱们以微信公众平台的获取token的接口来进行一下测试,首先需要获取接口相关的文档,咱们可以输入下面的链接,就可以直接看api文档了,链接https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

请求的方法是get,其中我在这里罗列一下需要的请求参数

参数

是否必须

说明

grant_type

获取access_token填写client_credential

appid

第三方用户唯一凭证

secret

第三方用户唯一凭证密钥

自己的appid和secret怎么获取到呢,这个需要咱们有自己的公众号了,在这里哈,如图所示,基本的参数有了之后,咱们就可以进行测试了

咱们使用数据驱动的方法进行测试,数据在json文件中,咱们先写一个json文件内容如下,里面写的有url,还有咱们请求的必要参数

代码语言:javascript复制
[
  {
    "path": {
    "url": "https://api.weixin.qq.com/cgi-bin/token"
  },
    "params": {
    "grant_type": "client_credential",
    "appid": "自己的",
    "secret": "自己的"
  }
  }
]

数据放在data文件夹里面

接下来是测试用例的编写,其中断言部分是与返回的数据作对比,可以看出如果参数对,返回的数据应该是以下这样的,所以与这个7200作比较,返回的数据里面有7200,就说明这个成功了

代码语言:javascript复制
{"access_token":"ACCESS_TOKEN","expires_in":7200}
代码语言:javascript复制
from pyparsing import ParseExpression
import requests
import json
import unittest
from ddt import data, ddt, file_data
# from HTMLTestRunner import HTMLTestRunner

@ddt
class UnittestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        pass

    @classmethod
    def tearDownClass(cls) -> None:
        pass
    # 采用ddt方式数据驱动,地址就是写的json的路径
    @file_data("D:/interfacetest/apiDemo/data/testwechat.json")
    def test_01(self, **kwargs):
        print(kwargs["path"]["url"])
        """
        正向的测试用例
        :param kwargs:
        :return:
        """
        response = requests.get(url=kwargs["path"]["url"], params=kwargs["params"])
        expectValue = '7200'
        acutalValue = str(response.json()["expires_in"])
        self.assertIn(expectValue, acutalValue)
        print("请求数据:", kwargs)

接下来就是主函数了,主函数咱们采用BeautifulReport实现,具体的代码如下

代码语言:javascript复制
from BeautifulReport import BeautifulReport
import unittest
if __name__ == '__main__':
    discover = unittest.defaultTestLoader.discover("./test_case", pattern="testwechat.py")
    BeautifulReport(discover).report("执行用例", filename="res.html", report_dir="./reports")

看一下执行的效果

测试报告

以上就是咱们简单的自动化接口测试了以后还会定期更新新内容哈

0 人点赞