【pytest】参数化parametrize

  • 前言:
    • 软件测试中,输入相应值,检查期望值,是常见测试方法。
    • 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖测试范围,所以,需要参数化来传递多组数据。
    • pytest的测试用例参数化使用如下装饰器即可完成
@pytest.mark.parametrize(argnames, argvalues)
# 参数:
# argnames:以逗号分隔的字符串
# argvaluse: 参数值列表,若有多个参数,一组参数以元组形式存在
  • 一个参数多个值

  • 多个参数多个值

  • 多个参数的混合使用,笛卡尔积

  • 实际使用场景

import pytest,requests
test_data = [
    ("M", {"message": "update some data!", "code": 0}),
    ("F", {"message": "update some data!", "code": 0}),]

@pytest.mark.parametrize("test_input, expect", test_data)
def test_updata_info_32(login_fix, test_input, expect):
    '''修改个人信息'''
    url = "http://xxxxxx:9000/api/v1/userinfo"
    body = {"name": "test","sex": test_input, "age": 20,"mail": "xxxxxx@qq.com"}
    r = requests.post(url, json=body) 
    print(r.text)
    assert r.json()["message"] == expect["message"]
    assert r.json()["code"] == expect["code"]
posted @ 2022-08-05 22:04  Tony_xiao  阅读(93)  评论(0编辑  收藏  举报