首页 > 编程语言 >python接口自动化系列(11):断言请求结果

python接口自动化系列(11):断言请求结果

时间:2024-03-03 21:59:06浏览次数:29  
标签:11 status actual python res 接口 assert expect assertFields

 

本系列汇总,请查看这里https://www.cnblogs.com/uncleyong/p/18033074

实现目标

解析测试数据中要断言的字段,进行断言,判断用例是否成功。

 

添加工具模块

utils下添加assert_tool.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: 韧
# @wx: ren168632201
# @Blog: https://www.cnblogs.com/uncleyong/


import jsonpath,json

def assert_res(assertRes, res):
    res_status = 'pass'
    for i in assertRes.split(";"):
        i_ = i.strip()
        if i_:
            actual_expr = i_.split("=")[0].strip()
            actual = jsonpath.jsonpath(json.loads(res), actual_expr)[0]
            expect = i_.split("=")[1].strip()
            if str(actual) != expect:
                # print(type(actual),type(expect))
                # print("expect: ",expect)
                # print("actual: ",actual)
                res_status = 'fail'
                return res_status
    return res_status

if __name__ == '__main__':
    res = '{"data":{"id":3396,"username":"tester","password":"******","realName":"tester","sex":"1","birthday":"1990-06-16","phone":"13500000006","utype":"0","addtime":"2024-01-07 20:23:46.0","adduser":"tester"},"code":2001,"msg":"注册成功"}'
    assertRes = "$.msg=注册成功;"
    r = assert_res(assertRes,res)
    print(r)

 

修改测试类

添加:

        assertFields = casedata["assertFields"]
        # logger.info(">>>>>assertFields:{}".format(assertFields))

        if assertFields:
            res_status = assert_res(assertFields, res.text)
            logger.info("断言结果是:%s\n\n" % res_status)
            # gv.res.append([res.text, url, headers, cookies, params, body, res_status])
            assert res_status == "pass"

 

运行结果

为了演示效果,最后一条用例断言失败

 

标签:11,status,actual,python,res,接口,assert,expect,assertFields
From: https://www.cnblogs.com/uncleyong/p/18050230

相关文章

  • python接口自动化系列(12):集成allure
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标获取到测试结果后,把结果展示在allure报告中,allure报告非常美观,是目前主流。本篇我们先生成json格式的测试结果数据。 安装allure插件pipinstallallure-pytest 修改测试类动态添加allur......
  • python接口自动化系列(09):发送http请求
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标发送http请求,获取服务器响应内容 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 安装模块requests提供了方便易用的HTTP请求功能pipinstall......
  • python接口自动化系列(06):解析初始化sql
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标将initSql中常用变量占位符(下图划线的)替换为实际值。 添加替换变量工具模块substitution_tool.py#!/usr/bin/envpython#-*-coding:utf-8-*-#@Author:韧#@wx:ren168632201#@Bl......
  • python接口自动化系列(03):创建自动化框架项目
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标搭建能基于pytest运行测试用例的项目。 创建项目1、输入项目名称2、选择项目位置3、自定义虚拟环境(默认即可) 创建完成 安装pytest补充:python虚拟环境操作,详见:https://www.cnblogs.c......
  • 洛谷题单指南-二分查找与二分答案-P1163 银行贷款
    原题链接:https://www.luogu.com.cn/problem/P1163题意解读:利率越小,贷款期限和每个月还的钱固定的情况下,越有可能能够还完全部的贷款,具备单调性,因此给定贷款利率、贷款月数、每月还款钱数,可以计算最终贷款还剩下多少,有两种情况:>=0,说明利率可能大了,要试探更小利率;<0,说明利率小了,要......
  • python接口自动化系列(04):读取数据文件并注入到测试方法
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标把用例yaml文件中数据读取出来,依次把每条用例数据传给测试方法。 安装模块安装操作yaml的模块pyyamlpipinstallpyyaml 测试数据文件放data目录case.yaml 内容:----epic:全栈测......
  • python接口自动化系列(05):获取常用变量
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标获取常用变量,方便后面解析初始化sql或者请求参数的时候将常用变量占位符替换为实际值。 添加常用变量数据文件data目录下创建variable.yaml 内容:---'#{username}':tester'#{password_......
  • python接口自动化系列(02):yaml测试数据文件设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标对测试数据进行设计,数据设计决定了后续读取数据的代码该如何实现。 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 常用数据用例数据频繁使用......
  • C++ 接口(抽象类) 虚函数
    接口描述了类的行为和功能,而不需要完成类的特定实现。C++接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用"=0"来指定的clas......
  • Java流程控制11:break、continue、goto
    breakcontinue1.break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)2.continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否......