前言
前面的公众号学习了unittest的Fixture,其实pytest的Fixture大同小异,也非常类似。
1、在做web自动化时,使用Fixture的一些前置或后置条件,非常有效,比如启动浏览器、关闭浏览器等等;
2、在接口自动化过程中,case的数据依赖也可以使用Fixture来完成,也特别有效率;
1、分类
1、setup_module/teardown_module :当前py文件中,所用用例执行之前与之后执行;
2、setup_function/teardown_function:在每个测试函数之前与之后执行;
3、setup/teardown:在每个测试函数之前与之后执行,也可同样适用于类函数;
4、setup_class/teardown_class:在当前测试类的开始与结束时执行;
5、setup_method/teardown_method:在每个测试方法开始与结束时执行;
2、运用
2.1 函数级别
# time :2021/3/28 00:31
# Author :Maynard
import pytest
'''函数级别'''
def setup_function():
print('---函数级别开始')
def teardown_function():
print('---函数级别结束')
# ----------测试用例-------------
def test_fun_1():
sum_1 = 1+1
assert sum_1 == 2
print('用例1')
def test_fun_2():
sum_2= 3+1
assert sum_2 == 4
print('用例2')
if __name__ == '__main__':
pytest.main(['-s','test_05fixture.py'])
'''
main函数中参数含义
-s 可以显示用例的打印信息
-q 参数只显示结果,不会显示过程
'''
运行结果-1
2.2 模块级别
'''
模块级别- 该*.py 所有case,前后执行一次
'''
def setup_module():
print('模块前执行')
def teardown_module():
print('模块后执行')
def setup_function():
print('---函数级别开始')
def teardown_function():
print('---函数级别结束')
# ----------测试用例-------------
def test_fun_3():
sum_3 = 1+1
assert sum_3 == 2
print('用例3')
def test_fun_4():
sum_4= 3+1
assert sum_4== 4
print('用例4')
if __name__ == '__main__':
pytest.main(['-s','test_05fixture.py'])
'''
main函数中参数含义
-s 可以显示用例的打印信息
-q 参数只显示结果,不会显示过程
'''
运行结果-2
2.3 类级别
'''
类级别
'''
class TestCaseMaynard():
def setup(self):
print('setup用例开始前执行')
def teardown(self):
print('teardown用例结束后执行')
def setup_class(self):
print('setup_class所有用例执行之前')
def teardown_class(self):
print('teardown_class所有用例执行之后')
def setup_method(self):
print('setup_method每个用例开始前执行')
def teardown_method(self):
print('teardown_method每个用例开始后执行')
def test_fun5(self):
sum_5 = 1 + 1
assert sum_5 == 2
print('用例5')
def test_fun6(self):
sum_6 = 1 + 1
assert sum_6 == 2
print('用例6')
if __name__ == '__main__':
pytest.main(['-s','test_05fixture.py'])
'''
main函数中参数含义
-s 可以显示用例的打印信息
-q 参数只显示结果,不会显示过程
'''
运行结果-3
3、总结
1、pytest是支持使用测试类的,同样必须以‘Test’开头,注意首字母必须大写;
2、setup_method/teardown_method 和 setup/teardown 两组方法都是作用于测试方法前后,两者方法效果一样,一般使用其一即可;
ps:
1、后续博客将继续深入pytest的总结和学习;
2、大家如果有问题,可以通过公众号首页添加作者微信,多交流,多沟通;