Pytest的前置和后置处理
2026/7/11 6:37:08 网站建设 项目流程

一.模块级别的setup和teardown

1.在Pytest中,可以使⽤"setup和teardown函数"来定义测试⽤例的"前置和后置"操作
1.1."setup函数":它会在每个测试⽤例执⾏之前运⾏,⽤于设置测试环境和准备测试数据1.1.setup全称:setup_module1.2."teardown函数":它会在每个测试⽤例执⾏之后运⾏,⽤于清理测试环境和资源1.2.1.teardown全称:teardown_module
2.代码中尽可能"前置、后置"写统一,要么都带上module,要么都不写3.setup、teardown与setup_module、teardown_module同时出现,会导致"前置和后置"竞争,导致可能其中一个不会在终端显示出来
4.示例
defsetup():# 前置操作print("执行前置操作")defteardown():# 后置操作print("执行后置操作")deftest_example():# 测试用例print("执行测试用例")
4.1.执行顺序
4.1.1.先执行setup4.1.2.再执行test_example4.1.3.最后执行teardown

二.函数级别的setup和teardown(没有类)

1.setup_function:函数级别的前置操作(函数即用例)2.teardown_function:函数级别的后置操作(函数即用例)
3.函数级别的"前置、后置"操作,每一个用例开始执行的的前后都会执行一次前、后置操作
4.test_002.py
defsetup_module():# ---> setup# 前置操作print("执行模块级别前置操作")defteardown_module():# ---> teardown# 后置操作print("执行模块级别后置操作")deftest_example1():# 测试用例1print("执行测试用例test_example1")deftest_example2():# 测试用例2print("执行测试用例test_example2")defsetup_function():# 函数级别的前置操作print("执行函数级别的前置操作")defteardown_function():# 函数级别的后置操作print("执行函数级别的后置操作")

三.类级别的setup和teardown(有类)

1.setup_class:类级别的前置操作2.teardown_class:类级别的后置操作
3."setup_class和teardown_class":在测试类的开始和结束时运⾏3.1.但是需要加上默认的‘@classmethod’装饰器,才会被识别为类级别的前、后置操作
4.类级别的前、后置操作固定写法格式
4.1.test003.py
classTestClass:@classmethoddefsetup_class(cls):# 类级别的前置操作print("执行类级别的前置操作")@classmethoddefteardown_class(cls):# 类级别的后置操作print("执行类级别的后置操作")deftest0021(self):print("执行测试用例test0021")deftest0022(self):print("执行测试用例test0022")

四.方法级别的setup和teardown(有类)

1.setup_method:方法级别的前置操作2.teardown_method:方法级别的后置操作
3."setup_method和teardown_method":在每个测试⽅法的开始和结束时运⾏
4.test_004.py
classTestClass:defsetup_method(self,method):# 方法级别的前置操作print("执行方法级别的前置操作")defteardown_method(self,method):# 方法级别的后置操作print("执行方法级别的后置操作")deftest_example1(self):# 测试用例1print("执行测试用例test_example1")deftest_example2(self):# 测试用例2print("执行测试用例test_example2")deftest_example3(self):# 测试用例3print("执行测试用例test_example3")

5.类级别的前、后置,与方法级别的前、后置一起使用,执行顺序
5.1.先执行类级别的前置操作5.2.再逐个执行每个测试用例,执行每个用例的同时都会执行一次方法级别的前、后置操作5.3.最后执行类级别的后置操作
5.4.test_005.py
classTestClass:defsetup_method(self,method):# 方法级别的前置操作print("执行方法级别的前置操作")defteardown_method(self,method):# 方法级别的后置操作print("执行方法级别的后置操作")deftest_example1(self):# 测试用例1print("执行测试用例test_example1")deftest_example2(self):# 测试用例2print("执行测试用例test_example2")deftest_example3(self):# 测试用例3print("执行测试用例test_example3")@classmethoddefsetup_class(cls):# 类级别的前置操作print("执行类级别的前置操作")@classmethoddefteardown_class(cls):# 类级别的后置操作print("执行类级别的后置操作")

五.模块的前后置操作案例

1.test_duck40.py
defsetup():# 模块的前置操作,用例开始执行之前先打印出一句开始的提示语print("---烤鸭店系统开始工作---")defteardown():# 模块的后置操作,用例执行结束后,打印出一句结束的提示语print("---即将退出烤鸭店系统---")deftest_duck_4_0():projects={}# 装多个商品whileTrue:oper_type=input("1 - 录入商品\n2 - 查询商品\n3 - 退出\n请做出你的选择:")ifoper_type=="1":pro_list=[]# 录入逻辑print(">>>准备开始录入商品<<<")load_txt=["请输入商品名:","请输入商品的成本价:","请输入商品的产地:","请输入商品的生产日期:"]foriinload_txt:name1=input("{}".format(i))pro_list.append(name1)projects[pro_list[0]]=pro_listelifoper_type=="2":# 查询逻辑print(projects)po_name=input("请输入要查询的商品名:")print("你要查询的商品是:{}".format(projects[po_name]))# 烤鸭 -- 直接给我烤鸭信息elifoper_type=="3":breakelse:print("无法别操作,请重新输入")continue
2.main.py
importpytest pytest.main(["-k","test_duck40","-vs"])
2.1.main文件执行结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询