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


     编写登陆接口

    app.py

    1. from flask import Flask, request, jsonify, Response
    2. app = Flask(__name__)
    3. @app.route('/login', methods=['POST'])
    4. def login():
    5. username = request.form.get('username')
    6. password = request.form.get('password')
    7. # 在这里编写你的登录验证逻辑
    8. if username == 'admin' and password == 'password':
    9. # 登录成功
    10. response = jsonify({'message': '登录成功'})
    11. response.status_code = 200
    12. else:
    13. # 登录失败
    14. response = jsonify({'message': '登录失败'})
    15. response.status_code = 401
    16. return response
    17. if __name__ == '__main__':
    18. app.run()

     

    1. import requests
    2. import pytest
    3. # 使用@pytest.mark.parametrize装饰器定义了一组参数化的测试数据
    4. @pytest.mark.parametrize('data, username, password, status_code', [
    5. ('登陆成功', 'admin', 'password', 200),
    6. ('登陆失败', 'admin1', 'password1', 401)
    7. ])
    8. def test_case01(data, username, password, status_code):
    9. # 打印测试用例的信息
    10. print('\n[测试用例]', data)
    11. # 构造登录请求的URL和数据
    12. url = 'http://127.0.0.1:5000/login'
    13. data = {
    14. "username": username,
    15. "password": password
    16. }
    17. # 发送POST请求
    18. res = requests.post(url=url, data=data)
    19. # 响应内容展示为中文
    20. response_text = res.text.encode('utf-8').decode('unicode_escape')
    21. print(response_text)
    22. # 断言实际的状态码与预期的状态码是否相等
    23. assert 200 == status_code
    24. if __name__ == '__main__':
    25. # 使用pytest执行测试用例
    26. 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'])来执行测试用例。

  • 相关阅读:
    H7-TOOL发布V2.18,脱机烧录新增芯海,辉芒微,武汉芯源,领芯等,支持了扫描枪,带来LUA写文件API,可以做日志或者数据记录了
    鸿蒙入门-13Gauge组件
    美国FBA海运详解:美国FBA海运费用价格有哪些
    找个好用的录屏软件,怎么这么难?
    C#扩展方法
    SRE,了解一下?35+岁程序员新选择
    [c++学习]-引用
    Jmeter性能实战之分布式压测
    30天刷题计划(四)
    Servlet | HttpServlet源码分析、web站点的欢迎页面
  • 原文地址:https://blog.csdn.net/qq_26086231/article/details/132642932