2:fixture


fixture的优势

  • 命名方式灵活,不局限于 setup 和teardown 这几个命名
  • conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture
  • scope="module" 可以实现多个.py 跨文件共享前置
  • scope="session" 以实现多个.py 跨文件使用一个 session 来完成多个用例
  • fixture可以让我们自定义测试用例的前置条件

1:pytest-fixture----特殊用例前置(默认是作用域function级别--只能在单个方法里用)

场景:

  1:用例1需要登录

  2:用例2不需要登录

  3:用例3需要登录

这种场景无法用setup与teardown方法,

可以在需要特殊前置方法前加@pytest.fixture()---,在使用时测试用例传入前置的方法名

 

 2:conftest.py

1:conftest文件名不能换

2:conftest.py与运行的用例要在同一包下,并且有__init__.py文件

3:全局配置和前期工作都可以写在这里

2:yield--特殊用例后置(类似teardown)----需要用例执行返回的数据

  第一次调用yield之前的并返回的结果,第二次调用yield之后的并返回结果 ,有返回值要使用addfinalizer

   scope='class'---类级别先在执行用例之前执行一次,在执行完整个测试类之后在执行一次

  @pytest.fixture(scope='class')

  def open_browser():

    print('\n打开浏览器')

    yield

 print('关闭浏览器')
  

3:@pytest.fixture(autouse=True)---全部用例都自动执行

@pytest.fixture(autouse=True)
def login():
print('自动执行')