当前位置: 代码迷 >> 综合 >> Python + Selenium(十一)- pytest.mark.parametrize及前置后置的使用
  详细解决方案

Python + Selenium(十一)- pytest.mark.parametrize及前置后置的使用

热度:117   发布时间:2023-10-12 05:25:44.0

文章目录

    • 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,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

  相关解决方案