pytest框架实现开放接口自动化测试

区别于其他的自动化流程,从正常的逻辑角度来说,可能就是不需要去调用登录接口

在api层,我们只需要定义加密方法

查看开发文档,根据文档中的规则及加密方式,进行封装

from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA
import base64


privateKey = """-----BEGIN PRIVATE KEY-----
我是PRIVATE KEY,问开发要,或者是在页面在数据库取对应的PRIVATE KEY
-----END PRIVATE KEY-----"""
def sign_body(body):
 # 取出body中的key和value

    a = ["=".join(i) for i in body.items() if(i[1] and i[0] !="sign_type")]
 # 对值进行排序并且使用&拼接
    strA =  "&".join(sorted(a))
    # print("AA"+strA)
    return strA

def RSA_sign(data):
 # 实现RSA加密
    priKey = RSA.importKey(privateKey)
    signature = PKCS1_v1_5.new(priKey)
    hash_val = SHA.new(data.encode("utf-8"))
    re =signature.sign(hash_val)
    result = base64.b64encode(re)
    red = result.decode()
    return red

if __name__ == '__main__':
    a='1232323231hfgds45123@¥%'
    print(RSA_sign(a))



获取需要实现开放接口的body,及请求方式内容 

import requests
from api.sign import RSA_sign,sign_body


def way(context='这里是内容',method="这里是内容",**kwargs):
 # 设置默认参数
    url="http://url"

    body={
      #  这里是body参数,看是json格式还是data
    }
    h={
        #  这里是头部参数,有些是把签名放置在body,按文档实现
        "sign": RSA_sign(sign_body(body))
    }
    body.update(**kwargs)
    # print(h)
    r=requests.post(url,data=body,headers=h)
    # print(r.json())
    return  r


if __name__ == '__main__':
    b=way()
    print(b.json())



完成底层的api调试后,我们来实现一下辅助类的技能吧

需要实现自动化,我们需要让她能读取我们的测试数据

 在common中新增一个read_yaml.py,当然你名字叫啥都行

import  yaml
import os


def yaml_to_json(yaml_path):
    try:
        with open(yaml_path,"r",encoding="utf-8") as f:
            b=f.read()
            abc=yaml.safe_load(b)
            # abc=yaml.safe_load(f.read())
    except:
        print("读取异常")

    return abc

if __name__ == '__main__':
    a=r'D:\xx.yaml'
    print(yaml_to_json(a))

比如在config中定义基础内容,根目录啥的

import  os

curpath=os.path.realpath(__file__)

rootpath=os.path.dirname(os.path.dirname(curpath))

好了 以上弄好了 可以设置case了

读取测试数据

实际结果跟预设的结果进行断言判断

import os
import pytest
import allure
# from api.sign import RSA_sign,sign_body
from api.way import way
from commmon.read_yaml import yaml_to_json
from config.config import rootpath


# print(rootpath)
# a=os.path.join(rootpath,"data","context.yaml")

data=yaml_to_json(os.path.join(rootpath,"data","context.yaml"))
print(data)

@pytest.mark.parametrize('testinput,exp',data)
def test_context(testinput,exp):
    r=way(**testinput)
    print(r)
    assert r.json().get('code')==exp.get('code')

 然后执行用例即可

放个目录图

 

 

接口自动化测试是软件开发过程中的重要环节,它可以验证接口功能是否正常、提高测试效率和准确性。pytest是一个功能强大的Python测试框架,它提供了简洁的语法和丰富的插件,非常适合用于接口自动化测试实战。 在进行pytest接口自动化测试实战时,我们可以按照以下步骤进行: 1. 环境准备:首先,我们需要安装pytest框架和相关依赖的库,例如requests库用于发送HTTP请求,pytest-html插件用于生成HTML测试报告。 2. 编写测试用例:接下来,我们需要编写测试用例。可以使用pytest提供的装饰器(如@pytest.mark.parametrize)来参数化测试用例,从而实现对不同输入和预期结果的验证。 3. 发送请求:在测试用例中,我们可以使用requests库发送HTTP请求,根据接口的请求方法(如GET、POST、DELETE等)以及请求参数、请求头等来构建请求。 4. 断言结果:一旦接口请求完成,我们可以使用断言语句进行结果的判断和验证。断言语句可以使用pytest提供的断言函数(如assert response.status_code == 200)来实现。 5. 运行测试:编写完测试用例后,我们可以使用pytest命令来执行测试。pytest会自动搜索以"test_"开头的文件和以"test_"开头的函数,并执行这些函数中的测试用例。 6. 生成测试报告:执行完测试后,pytest会生成测试结果的详细报告。我们可以使用pytest-html插件来生成HTML格式的测试报告,方便查看测试结果和统计。 通过以上步骤,我们可以使用pytest框架进行接口自动化测试实战。pytest提供了丰富的功能和灵活的语法,能够大大简化测试代码的编写和维护,并且测试报告清晰明了,方便查看和分析测试结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值