在编写场景自动化的过程,我们往往需要进行前后置,本文章主要介绍pytest三种前后置: setup/teardown,setup_class/teardown_class:主要作用于所有用例或者所有的类 @pytest.fixtrue():可以作用于部分,也可以作用于全部 conftest.pyhe @pytest.fixtrue()结合使用:作用与全局的前后置
一、setup/teardown,setup_class/teardown_class 几个前后置使用场景: setup_class:在所有用例之前只执行一次 setup:每个用例之前执行一次 teardown:每个用例之后执行一次 teardown_class:所有用例执行完后执行一次 (1)举例场景: 执行用例前,我们需要打开数据库 执行第一个用例第一步,我们需要打开浏览器 执行用例 执行执行完用例,我们需要关闭浏览器
执行第二个用例第一步,我们需要打开浏览器 执行用例 执行执行完用例,我们需要关闭浏览器
第n、n+1。。。。
所有用例均执行完毕,我们需要关闭数据库 (2)代码运行
class TestPreSub:
def setup_class(self):
print("执行用例前,我需要现打开数据库")
print("————————————————数据库已经打开————————————————————")
def setup(self):
print("________________浏览器已经打开__________________")
def testCase0(self):
print("开始执行第一条用例执行完毕^ - ^")
def testCase1(self):
print("开始执行第二条用例执行完毕^ - ^")
def testCase3(self):
print("开始执行第三条用例执行完毕^ - ^")
def testCase4(self):
print("开始执行第四条条用例执行完毕^ - ^")
def teardown(self):
print("________________浏览器已经关闭__________________")
def teardown_class(self):
print("————————————————数据库已经关闭————————————————————")
二、使用@pytest.fixture()装饰器来实现部分用例的前后置 (一)fixture简介 fixture是pytest勇于测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。 是在测试函数运行前后,由pytest执行的外壳函数,代码可以定制,满足多变的测试需求; eg:定义传入测试中的数据集; eg:配置测试前系统的初始状态; eg:为批量测试提供数据源 (二)fixture的简要例子 例子1
例子2:
import pytest
@pytest.fixture()
def some_day():
return 520
def test_some_day(some_day):
assert some_day ==1314
执行结果: @pytest.fixture()装饰器用来声明函数是一个fixture 如果测试函数的参数列表中包含fixture名字,pytest则会监测到fixture,并在执行测试用例前先执行fixture的方法(这也就是上面的例子实获取到实际为520的原因) 三、conftest.py的使用 执行顺序是:搜索测试所在的模块,然后搜索conftest.py
*fixture放的位置:可以单独放在测试文件里 如果希望多个测试文件共享fixture,可以放在公共目录下的conftest.py文件,将fixture放在里面, 总之通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用,应用场景eg:全局的登陆,模块的全局处理 注意事项: conftest.py文件是单独存放的一个配置文件,名称不能进行更改; 原则上,conftest.py需要和运行的用例放在同一层,并且不需要做任何的import导入的操作。
|