6.pytest参数化操作

前面文章有写道通过fixture中params参数完成参数化,但是该方式会应用到所有测试用例,如果只想在单个测试用例上使用,则需要用到@pytest.mark.parametrize这个装饰器完成

我们想要实现对一个登陆程序的参数化操作。代码如下:

# 登录程序源码
login_info = {'zhangsan':'123456','lisi':'000000'}
def login(username,password):
    if username in login_info:
        if password == login_info[username]:
            return '登录成功'
        else:
            return '密码输入错误'
    else:
        return '用户名输入错误'
# 测试代码
# @pytest.mark.parametrize该装饰器所接收参数是通过列表的方式接收,每一组参数为一个元组,如果数据较多的情况下,可以将数据放到文件中读取
@pytest.mark.parametrize("username,password,expect", [ ('zhangsan','123456','登录成功'), ('zhangsi', '123456', '用户名输入错误'), ('zhangsan', '000000', '密码输入错误'), ]) def test_login(username,password,expect): assert login(username,password) == expect

 如果想要参数的自由组合,则可以通过多个参数化装饰器完成

# 程序源码
def login(username,password):
    print('用户名为:%s	密码为:%s'%(username,password))
    
# 测试代码
@pytest.mark.parametrize("username",['zhangsan','lisi','wangwu'])
@pytest.mark.parametrize("password",['123456','000000','abcdef'])
def testlogin(username,password):
    login(username,password)

原文地址:https://www.cnblogs.com/XhyTechnologyShare/p/12263747.html