• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

pytest 自动化框架搭建-第case

武飞扬头像
DDQ_DQ
帮助1

我觉得以上博客写的比较详细,并且可以获取博主公众号资源,我是根据博主的框架结构来学习的,使用的是自己java写接口来进行的学习,以下之时将一个case跑起来了

一、接口请求遇到的问题

请求接口时,调用接口返回400,日志打印报错如下

JSON parse error: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN
 at [Source: (PushbackInputStream); line: 1, column: 6]]

排查了好久,原写法data=parameters, 将参数使用json.dumps()进行了一下转化

学新通

 该框架下是使用json文件作为用例数据的管理:如下dataItem 下为测试数据,这个json文件中包含了两条case,parameters下为接口请求参数,expectdata  下为需要校验的参数

{
"dataItem": [        
{
"id": "testpost-1",
"name": "登陆成功",
"url":"/api/user/doLogin",
"headers":{
"Content-Type":"application/json"
},
"parameters": {
"name":"uu",
"password":"XXX"
},
"expectdata": {
"data": "登录成功",


"message":"success"
}
},
{
"id": "testpost-2",
"name": "登陆失败",
"url":"/api/user/doLogin",
"headers":{
"Content-Type":"application/json"
},
"parameters": {
"name":"uu88",
"password":"XXX"
},
"expectdata": {
"data": "用户名或密码错误",
"message":"faild"
}
}
]
}

  1.  
    class TestLogin:
  2.  
    #获取文件json文件路径
  3.  
    file_json_data_path = ReadJsonFileUtils.get_data_path("resource","login_data.json")
  4.  
    #读取json文件数据
  5.  
    param_data = ReadJsonFileUtils(file_json_data_path)
  6.  
    data_item = param_data.get_value('dataItem')
  7.  
     
  8.  
    @pytest.mark.parametrize('args',data_item)
  9.  
    def test_login(self,args):
  10.  
    print("用例id",format(args["id"]))
  11.  
    print("用例名称",format(args["name"]))
  12.  
    logging.info("测试用例开始执行")
  13.  
    #接口请求
  14.  
    res = HttpUtils.http_post(headers=args["headers"],url=CAOLIAO_HTTP_POST_HOST args["url"],parameters=args['parameters'])
  15.  
    #接口断言
  16.  
    assert (res.get("message") == args["expectdata"]["message"])
  17.  
    assert (res.get("data") == args["expectdata"]["data"])
  18.  
    print("res值",res)
学新通

以上是一个case,其中 ReadJsonFileUtils是封装的读取.json文件的模块,HttpUtils封装的requests接口请求的模块

@pytest.mark.parametrize('args',data_item) 标签用来做参数化,其中args为参数,data_item为参数具体值,如果参数多个可以定义多个参数,data_item 有多个值时,case就会执行多次,个人觉得还挺方便的

assert 为断言,将请求返回的参数,与json文件中expectdata 数据比较

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiebbfi
系列文章
更多 icon
同类精品
更多 icon
继续加载