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\t密码为:%s'%(username,password)) # 测试代码 @pytest.mark.parametrize("username",['zhangsan','lisi','wangwu']) @pytest.mark.parametrize("password",['123456','000000','abcdef']) def testlogin(username,password): login(username,password)