当前位置: 首页 > news >正文

pytest parametrize多参数接口请求及展示中文响应数据

 编写登陆接口

app.py

from flask import Flask, request, jsonify, Responseapp = Flask(__name__)@app.route('/login', methods=['POST'])
def login():username = request.form.get('username')password = request.form.get('password')# 在这里编写你的登录验证逻辑if username == 'admin' and password == 'password':# 登录成功response = jsonify({'message': '登录成功'})response.status_code = 200else:# 登录失败response = jsonify({'message': '登录失败'})response.status_code = 401return responseif __name__ == '__main__':app.run()

 

import requests
import pytest# 使用@pytest.mark.parametrize装饰器定义了一组参数化的测试数据
@pytest.mark.parametrize('data, username, password, status_code', [('登陆成功', 'admin', 'password', 200),('登陆失败', 'admin1', 'password1', 401)
])
def test_case01(data, username, password, status_code):# 打印测试用例的信息print('\n[测试用例]', data)# 构造登录请求的URL和数据url = 'http://127.0.0.1:5000/login'data = {"username": username,"password": password}# 发送POST请求res = requests.post(url=url, data=data)# 响应内容展示为中文response_text = res.text.encode('utf-8').decode('unicode_escape')print(response_text)# 断言实际的状态码与预期的状态码是否相等assert 200 == status_codeif __name__ == '__main__':# 使用pytest执行测试用例pytest.main(['-v', 'test_case.py'])

这段代码是一个使用pytestrequests库编写的测试脚本,用于测试登录功能。它包含一个名为test_case01的测试用例,使用@pytest.mark.parametrize装饰器定义了一组参数化的测试数据。

测试数据包括登录成功和登录失败的情况。每组测试数据都有datausernamepasswordstatus_code四个参数。data参数用于描述测试用例的信息,usernamepassword参数是登录时使用的用户名和密码,status_code参数是预期的响应状态码。

测试用例函数内部首先打印测试用例的信息,然后构造登录请求的URL和数据。接下来,使用requests.post方法发送POST请求,并将响应保存在res变量中。

为了将响应内容以中文展示,使用了以下代码行:

response_text = res.text.encode('utf-8').decode('unicode_escape')

这段代码将响应的文本内容进行了编码和解码操作。首先,使用encode('utf-8')将文本内容编码为UTF-8格式的字节串,然后使用decode('unicode_escape')将字节串解码为Unicode字符串。这样做可以确保中文字符正确显示。

最后,使用print(response_text)将响应内容打印出来。然后使用assert语句来断言实际的状态码与预期的状态码是否相等。

在脚本的最后部分,通过pytest.main(['-v','test_case.py'])来执行测试用例。

http://www.lryc.cn/news/158097.html

相关文章:

  • 电视连续剧 ffmpeg 批量去掉片头片尾
  • 二进制搭建kubernetes
  • TDengine函数大全-系统函数
  • 北京互联网营销服务商浩希数字科技申请1350万美元纳斯达克IPO上市
  • ElementUI浅尝辄止22:Alert 警告
  • HCIP的mgre实验
  • redis cluster集群搭建
  • 小红书笔记爬虫
  • 国密GmSSL v2版本命令行方式生成国密sm2私钥、公钥、签名和验证签名
  • 2023年9月惠州/深圳CPDA数据分析师认证找弘博创新
  • it运维监控管理平台,统一运维监控管理平台
  • TDengine 官网换了新“皮肤”,来看看这个风格是不是你的菜
  • MFC:自绘CListBox,GetText返回一个乱码
  • shell 脚本发布前后端代码
  • 我的私人笔记(Linux中安装mysql)
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven目录结构和idea的整合
  • Android Automotive概述
  • iOS 16.4更新指南:问题解答与新功能一览
  • Vue + Element UI 前端篇(八):管理应用状态
  • 开发常用代码区
  • SpringBoot+MySQL+Vue前后端分离的宠物领养救助管理系统(附论文)
  • ClickHouse 存算分离改造:小红书自研云原生数据仓库实践
  • STM32-DMA
  • 1065 A+B and C (64bit)
  • 阿里云效和阿里在线idea使用
  • [git] 删除分支中的内容 -> 空分支
  • git 配置
  • vue router进行路由跳转并携带参数(params/query)
  • Mysql触发器
  • 认识doubbo和rpc