文章目录
-
- pytest.mark.parametrize
- pytest的前置条件与后置条件
-
- 1、用例的前置与后置条件
- 2、类的前置与后置条件
- 3、模块的前置与后置条件
- 4、程序的前置后置条件
pytest.mark.parametrize
Pytest 中装饰器可以实现测试用例参数化,类似 unittest 中的DDT。
语法:@pytest.mark.parametrize(‘参数名’,list)
import pytestclass TestLogin:login_err_data = [{
'name':'kaishui','pwd':''},{
'name':'','pwd':'123'}]@pytest.mark.parametrize('login_data', self.login_err_data)def test_login_err(self, login_data ):# 调用登录方法,将用户名和密码传入res = login_page.login(login_data['name'],login_data['pwd'])# 验证是否登录成功assert res == '登录成功'
可以看出,pytest.mark.parametrize将列表login_err_data中的每个元素都赋值到变量login_data中。
该装饰器与ddt的区别是自动拆包了。
pytest的前置条件与后置条件
1、用例的前置与后置条件
import pytest@pytest.fixture()
def case_fixture():# 前置条件username = 'kaishui'pwd = '123'print('这是用例的前置条件')yield username,pwd# 后置条件print('这是用例的后置条件')class TestLogin:def test_login_err(self, case_fixture):# 声明name,pwd变量用来接收前置条件传来的参数name , pwd = case_fixture# 调用登录方法,将用户名和密码传入res = login_page.login(name,pwd)# 验证是否登录成功assert res == '登录成功'
@pytest.fixture():用来声明该方法是前置、后置方法;
yield:写在fixture方法中,用来区别前置条件和后置条件,并且能够return前置条件中的相关数据
用例前置后置条件的调用:直接在测试用例的参数中写入前置后置方法名。
用例前置后置条件的参数接收:直接拆包接收即可。
2、类的前置与后置条件
import pytest@pytest.fixture(scope='class')
def class_fixture():# 前置条件print('这是类的前置条件')yield # 后置条件print('这是类的后置条件')class TestLogin:def test_login_err(self, class_fixture):# 调用登录方法,将用户名和密码传入res = login_page.login(name,pwd)# 验证是否登录成功assert res == '登录成功'
对比用例的前置后置条件,类只需要在后面加上**(scope=‘class’)** 即可。
只要在一个用例参数中写了类前置后置方法名,在执行时,该类就会调用该方法,且只调用一次。
3、模块的前置与后置条件
@pytest.fixture(scope='module',autouse=True)
def module_fixture():# 前置条件print('这是模块的前置条件')yield # 后置条件print('这是模块的后置条件')
对比类的前置后置条件,将scope的值换成了module。
autouse=True: 代表不需要在模块中指定是否需要使用前置后置条件,所有的模块都会自动使用模块前置后置条件。
4、程序的前置后置条件
@pytest.fixture(scope='session',autouse=True)
def module_fixture():# 前置条件print('这是程序的前置条件')yield # 后置条件print('这是程序的后置条件')
session 的前置后置条件在每一次程序中只会执行一次,即最外层的前置后置。
最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。