精通自动化,Pytest自动化测试框架-fixture用例的前后置(实现)


前言

测试用例实现前后置,有多种方法。在实际编写测试脚本时,要根据实际情况选择

1、xunit类型

def setup_function()
def teardown_function()

def setup_method(self)
def teardown_method(self)

@classmethod
def setup_class(cls)
@classmethod
def teardown_class(cls)

2、unittest类型

#先要在class类中继承unittest.testcase
@classmethod
def setUpClass(cls)
@classmethod
def tearDownClass(cls)
def setup(self)
def tearDown(self)

3、pytest中的fixture类型
定义夹具

@pytest.fixture
def fixture_func():
    print('前置条件')
    yield  #这里可以有返回值,用于夹具的继承
    print('后置条件')
@pytest.fixture(scope,autouse)

scope的取值有:
function 默认范围,函数范围,在测试完成后结束 【 类似setup/teardown】
class 在类中最后一个测试完成后结束 【类似setupClass/teardownClass】
module 在模块中最后一个测试完成后结束
package 在包中的最后一个测试完成后结束
session 在一次会话中的最有一个测试完成后结束【一次pytest叫做一次会话】

autouse取值默认False
模块级别/包级别/会话级别需要加

使用夹具

@pytest.mark.usefixtures("fixture_func")
def test():
    print('开始测试')

共享夹具
共享夹具都放在conftest.py文件中;
会从测试文件开始,一层一层目录查找conftest.py文件;
测试用例可以直接调用共享夹具中的夹具,不需要额外导入;

#conftest.py文件,在该文件下的夹具为共享夹具
@pytest.fixture(scope='class')
def driver(pytestconfig):
    browser = pytestconfig.getoption('--browser')
    if browser == 'edge':
        s = Service(executable_path=settings.BROWSER_DRIVERS['edge'])
        with webdriver.Edge(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd
     if browser == 'chrome':
        s = Service(executable_path=settings.BROWSER_DRIVERS['chrome'])
        with webdriver.Chrome(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd
     if browser == 'firefox':
        s = Service(executable_path=settings.BROWSER_DRIVERS['firefox'])
        with webdriver.Firefox(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd

4、夹具多重使用的执行步骤

扫描二维码关注公众号,回复: 15846710 查看本文章

先执行范围大的,再执行范围小的
同级别,按照先后顺序去调用夹具

5、夹具的继承

只能从大范围或者同范围的继承
夹具继承后,可以得到夹具到返回值

例子:

#conftest.py 共享文件
@pytest.fixture(scope='class')
def driver(pytestconfig):
    browser = pytestconfig.getoption('--browser')
    if browser == 'edge':
        s = Service(executable_path=settings.BROWSER_DRIVERS['edge']) #webdriver存放路径需要自己修改
        with webdriver.Edge(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd      #这里有返回值,用于夹具的继承
    if browser == 'chrome':
        s = Service(executable_path=settings.BROWSER_DRIVERS['chrome'])
        with webdriver.Chrome(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd
    if browser == 'firefox':
        s = Service(executable_path=settings.BROWSER_DRIVERS['firefox'])
        with webdriver.Firefox(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd
			
#测试用例文件
class TestMaxWindow():
    def test_maxWindow(self, driver):
      	#执行步骤:
        #1.会在共享夹具中找到driver,yield之前的为前置操作
        #2.执行到yield,夹具有返回值则得到参数
        #3.在该测试用例中可以用夹具返回的参数
        #4.测试用例结束后,继续执行夹具中的后置操作
        driver.maximize_window()
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不论遇到多大的困难,都要保持坚定的信念和勇往直前的勇气,只有不断奋斗,才能超越自我,创造属于自己的辉煌人生,让梦想照亮前行的路途。

在追寻梦想的道路上,不要畏惧困难与挫折,坚持奋斗,相信自己的能力和潜力,只有不断努力,才能创造属于自己的辉煌,绽放出人生最美的光芒。

无论前方道路多么曲折艰辛,坚持奋斗的心将永不熄灭,相信自己的实力与潜力,勇敢追逐梦想,只有不断努力,才能创造属于自己的辉煌人生,成就伟大的未来。

猜你喜欢

转载自blog.csdn.net/x2waiwai/article/details/131854017