Python基础——参数化执行接口测试

新建一个需要测试的接口类 http_request.py 文件

首先需要导入 requests库

函数参数存放测试数据传入的参数,有url,data,请求方式及cookie

如果请求方式是get则进行调用requests库中的get方法,如果是post则调用post方法,反之不支持

import requests

class HttpRequest:
    def http_request(self,url,data,method,cookie):
        if method.lower()=='get':
            res=requests.get(url,method,data=None,cookies=cookie)
        elif method.lower()=='post':
            res=requests.post(url,data,method,cookies=cookie)
        else:
            print("暂时不支持此请求方式")
        return res

建一个测试用例类 test_http.py 文件

导入unittest库,继承其中的TestCase方法,Testsuit方法等 

import unittest
from class_0416.http_request import HttpRequest
from class_0415.class_GetData import GetData

class TestHttp(unittest.TestCase):#创建类,继承unittest的TestCase的方法

    def setUp(self):#执行用例前首先执行此函数下的内容与teardown函数对应
        pass
    def __init__(self,methodName,url,data,method,expected):
        super(TestHttp,self).__init__(methodName)#超继承,既继承了父类的初始化函数,又不影响重写
        self.url=url #重写的url,以下相似
        self.data=data
        self.method=method
        self.expected=expected
    def test_api(self): #接口测试用例
        res=HttpRequest().http_request(self.url,self.data,self.method,getattr(GetData,'cookie'))#调用导入的需要测试的接口包,调用其中的函数,包含传参,参数需要self,cookie是反射的用法,需要在新建一个类名为GetData的方法,设置cookie字段为None
        if res.cookies:#如果存在cookie,就位true,执行以下语句
            setattr(GetData,'cookie',res.cookies)#反射,将cookie的值赋值在GetData中的cookie
        try:#捕获异常
            self.assertEqual(self.expected,res.json()['status'])#self.expected为测试数据中的数据,与json返回的status字段做比较,如果一致,测试通过
        except AssertionError as e:
            print("test_api 's 错误是:{0}".format(e))
            raise e#释放异常

执行用例以及存放测试数据的方法 test_suit.py 文件

import unittest
from class_0416.test_http import TestHttp
from tools import HtmlTestRunner
'''测试数据,千万注意大括号的位置'''
test_data=[{"url":"https://www.ketangpai.com/UserApi/login",
            "data":{"email":"183XXXXXXXX","password":"00XXXXXXXX"},
            "expected":1,
            "method":"post"},
           {"url":"https://www.ketangpai.com/UserApi/getUserInfo",
            "data":{},
            "expected":1,
            "method":"get"}]
suite=unittest.TestSuite() #创建一个容器
for item in test_data: #循环执行以下加载测试用例的方法
    suite.addTest(TestHttp("test_api",item['url'],item['data'],item['method'],item['expected']))# test_api 是测试用例的函数名

with open("TestSummer.html","wb") as file:#创建文件,不要忘了用wb方式创建
    runner=HtmlTestRunner.HTMLTestRunner(stream=file, verbosity=2, title="TestSummerReport", description=None)#文件的具体展示
    runner.run(suite)#执行用例

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值