pytest扫盲6--fixture之params、ids前置条件参数化

 1、本文介绍,如何利用 fixture 的 params、ids 参数,实现前置条件参数化

  使用 @pytest.fixture(param=[list1, list2, list3]) 的方式,以 request.param 的方式作为返回值供测试函数调用,param 中有多少元素,则调用几次,分别作用在每个用到的测试函数上。

# File  : conftest.py
# IDE   : PyCharm

import pytest
from selenium import webdriver

# 将驱动实例化 @pytest.fixture(name
='driver', params=[webdriver.Chrome(), webdriver.Ie()]) def switchBrowser(request):  # request 作为内键参数必须传入 print(' 实例化webdriver') yield request.param # 通过 request.param 接收参数化的数据 print(' 关闭webdriver') request.param.quit()

  使用 fixture 实例化的驱动参数打开浏览器:

# File  : test_demo_8.py
# IDE   : PyCharm

from time import sleep
class TestCase:

    def test_1(self, driver):
        print('
{}打开百度...'.format(driver))
        driver.get('https://www.baidu.com')
        print(driver.title)
        sleep(5)

  执行结果:

 test_demo_8.py::TestCase::test_1[driver0]

 test_demo_8.py::TestCase::test_1[driver1]


============================= 2 passed in 16.59s ============================== Process finished with exit code 0 实例化webdriver PASSED [ 50%] <selenium.webdriver.chrome.webdriver.WebDriver (session="a6394765b9c3d6b2cafb6dabbe0f5701")>打开百度... 百度一下,你就知道 关闭webdriver 实例化webdriver PASSED [100%] <selenium.webdriver.ie.webdriver.WebDriver (session="07c2b43d-d743-4762-b04b-c6c35cc58c34")>打开百度... 百度一下,你就知道 关闭webdriver

2、ids 有啥用?

  源码解释是字符串id列表,每个id对应一个参数,因此它们是测试id的一部分。如果没有提供id,它们将自动按照  name[param_index] 的方式生成。

  将上面的 conftest.py 文件加上 ids 参数

# File  : conftest.py
# IDE   : PyCharm

import pytest
from selenium import webdriver

@pytest.fixture(name='driver', params=[webdriver.Chrome(), webdriver.Ie()], ids=['Chrome', 'Ie'])
def switchBrowser(request):
    print('
实例化webdriver')
    yield request.param    # 通过 request.param 接收参数化的数据
    print('
关闭webdriver')
    request.param.quit()

  再次执行(注意标红的部分):

test_demo_8.py::TestCase::test_1[Chrome] 
test_demo_8.py::TestCase::test_1[Ie] 

============================= 2 passed in 16.96s ==============================

Process finished with exit code 0

实例化webdriver
PASSED                          [ 50%]
<selenium.webdriver.chrome.webdriver.WebDriver (session="8fa18d315e3b3d1f46c251a097522a59")>打开百度...
百度一下,你就知道

关闭webdriver

实例化webdriver
PASSED                              [100%]
<selenium.webdriver.ie.webdriver.WebDriver (session="eb9fb969-cdf7-45e3-a761-01a3162d9c85")>打开百度...
百度一下,你就知道

关闭webdriver
喜时之言,多失信;怒时之言,多失体
原文地址:https://www.cnblogs.com/xiaohuboke/p/13527326.html