美文网首页
11.接口自动化之工具封装005:python 测试用例的断言封

11.接口自动化之工具封装005:python 测试用例的断言封

作者: 小小一颗卤蛋 | 来源:发表于2024-03-24 20:08 被阅读0次

断言的用法:在pytest中,使用assert进行断言,格式为:assert 表达式;如果表达式为True则断言成功,否则断言失败

断言使用的场景
1、新增接口add

  • 响应数据里会直接返回msg:成功,还有新增id----可
    以直接去断言,断言关键数据:code msg
  • 接口没有返回数据None code 200
    1)是否有查询接口:有,直接查询的接口查询:resList:[{},{},{}很多条数据,或提交数据关键信息 in resList
    2)没有查询接口或者该端没有权限去查询:需要数据库权限--Python操作数据mysql,mongodb

断言优化:涉及到log的写到日志中

pytest常见的断言类型:
断言xx是否为真:assert xx
断言xx是否不为真:assert not xx
断言相等 : assert a==b
断言包含 : assert a in b
断言不包含: assert a not in b
断言不等于 : assert a!=b
断言大于 : assert a > b
断言小于 : assert a < b

unittest的三个断言:
assertEqual(expect,result) 断言相等
assertIn(expect,result) 断言包含
assertTure(expect,result) 断言为真

在common中新建断言文件apiAssert.py

import traceback
from utils.handle_loguru import log
class ApiAssert:
  @classmethod # 类方法  不需要实例化
  def api_assert(cls,result,conditony,exp_result,msg='断言操作'):
    # 断言结果描述--把结果放到日志中去
    pass_msg = '验证通过,断言结果:预期是:,实际结果是:'
    fail_msg = '验证失败,断言结果:预期是:,实际结果是:'
    # 简单方案 
    # if condition == ‘==’:
       # assert 1==1
   #   elif condition =='in' :
        #assert 1 in [1,2,3] 
    try:    
      assert_type={
            '==' : result == exp_result,
            '>' : result > exp_result,
            '<' : result < exp_result,
            'in' : result in exp_result,
            'not in' : result not in exp_result,
        }
          # 使用断言类型
        if condition in assert_type:
          assert assert_type[conditon] # 断言操作
        else :
          # 断言类型不存在--报错
          raise ValueError('请输入正确的断言情况') # 创建异常实例--进入到excepet中去
    except Exception as error:
      log.error(traceback.format_exc()) # 打印详细的报错
      # 在这里已经处理了异常,如果不抛出,pytest不知道,不能被统计到
      raise error # 抛出异常
  

在case中调用:

ApiAssert.api_assert(res['msg'],'==',exp_resp['msg'])

相关文章

网友评论

      本文标题:11.接口自动化之工具封装005:python 测试用例的断言封

      本文链接:https://www.haomeiwen.com/subject/itnsfdtx.html