NVME-oF IP 设计1 :为什么要设计它?
2026/7/11 7:36:58
一.模块级别的setup和teardown
1.在Pytest中,可以使⽤"setup和teardown函数"来定义测试⽤例的"前置和后置"操作1.1."setup函数":它会在每个测试⽤例执⾏之前运⾏,⽤于设置测试环境和准备测试数据1.1.setup全称:setup_module1.2."teardown函数":它会在每个测试⽤例执⾏之后运⾏,⽤于清理测试环境和资源1.2.1.teardown全称:teardown_module2.代码中尽可能"前置、后置"写统一,要么都带上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.pydefsetup_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.pyclassTestClass:@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.pyclassTestClass: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.pyclassTestClass: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.pydefsetup():# 模块的前置操作,用例开始执行之前先打印出一句开始的提示语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("无法别操作,请重新输入")continue2.main.pyimportpytest pytest.main(["-k","test_duck40","-vs"])2.1.main文件执行结果