• 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
    喜时之言,多失信;怒时之言,多失体
  • 相关阅读:
    UltraSoft
    UltraSoft
    UltraSoft
    UltraSoft
    UltraSoft
    [技术博客] 使用邮箱验证并激活账户
    OO第一单元作业总结
    OO第一单元总结
    buaaoo_second_assignment
    buaaoo_first_improvement
  • 原文地址:https://www.cnblogs.com/xiaohuboke/p/13527326.html
Copyright © 2020-2023  润新知