ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第十四:Pytest的fixture传参数request的详细使用

第十四:Pytest的fixture传参数request的详细使用 一.前言1.为提高复用性在写测试用例的时候会用到不同的fixture 比如最常见的登录操作大部分的用例的前置条件都是登录2.假设不同的用例想登录不同的测试账号那么登录fixture就不能把账号写死需要通过传参的方式来完成登录操作二.案例一传单个参数1.test_015.pyimportpytestpytest.fixture()deflogin(request):namerequest.paramprint(f 账号是{name})returnname data[pyy1,polo]ids[flogin_test_name is:{name}fornameindata]pytest.mark.parametrize(login,data,idsids,indirectTrue)deftest_name(login):print(f 测试用例的登录账号是{login})1.1.添加indirectTrue参数是为把login当成一个函数去执行而不是一个参数并且将data当做参数传入函数1.2.deftest_name(login)这里的login是获取fixture返回的值三.案例二多个参数1.test_016.pyimportpytestpytest.fixture()deflogins(request):paramrequest.paramprint(f账号是{param[username]}密码是{param[pwd]})returnparam data[{username:name1,pwd:pwd1},{username:name2,pwd:pwd2},]pytest.mark.parametrize(logins,data,indirectTrue)deftest_name_pwd(logins):print(f账号是{logins[username]}密码是{logins[pwd]})1.1.如果需要传多个参数需要通过字典去传四.案例三多个fixture(只加一个装饰器)1.test_017.pyimportpytest# 多个fixturepytest.fixture(scopemodule)definput_user(request):userrequest.paramprint(登录账户%s%user)returnuserpytest.fixture(scopemodule)definput_psw(request):pswrequest.paramprint(登录密码%s%psw)returnpsw data[(name1,pwd1),(name2,pwd2)]pytest.mark.parametrize(input_user,input_psw,data,indirectTrue)deftest_more_fixture(input_user,input_psw):print(fixture返回的内容:,input_user,input_psw)五.案例四多个fixture(叠加装饰器)1.test_018.pyimportpytest# 多个fixturepytest.fixture(scopefunction)definput_user(request):userrequest.paramprint(登录账户%s%user)returnuserpytest.fixture(scopefunction)definput_psw(request):pswrequest.paramprint(登录密码%s%psw)returnpsw name[name1,name2]pwd[pwd1,pwd2]pytest.mark.parametrize(input_user,name,indirectTrue)pytest.mark.parametrize(input_psw,pwd,indirectTrue)deftest_more_fixture(input_user,input_psw):print(fixture返回的内容:,input_user,input_psw)1.1.测试用例数2*24条
返回列表