背景:假如我们进入多个模块前(每个模块有一个用例),都要打开浏览器登录,执行完毕后,需要退出再关闭浏览器,即每次运行前都要执行登录打开、退出关闭两个大量重复的操作;这些我们都可以用前置后置初始化环境去实现,怎么去实现,就是下面要介绍的。
用例设计的名称原则(区分大小写)
- 文件名以test_*.py文件或*_test.py文件
- 测试类以Test开头,并且不能带有init方法
- 以test_开头的函数
- 以test开头的类
pytest的用例运行级别
setup和teardown都是在对应的模块、函数、类、方法中最开始、最后执行,而不是在模块、函数、类、方法之前执行
1、模块级(setup_module/teardown_module),开始于模块的始末,在模块的全局起作用【全局,不在类中】;
2、函数级(setup_function/reardown_function),只对函数用例生效,不在类中起作用【不在类中】;
3、类级(setup_class/teardown_class),只在类中的前后运行一次【在类中】
4、方法级(setup_method/teardown_method),开始于方法始末【在类中】
5、类里面的(setup/teardown),运行在调用方法的前后
一、模块级setup_module和teardown_module的示例:
执行顺序:setup_module()→test_add()→test_jian()→teardown_moudle()
模块运行前后,都会运行这个
二、函数级setup_function 和 teardown_function的示例:
执行顺序:setup_function()→test_add()→teardown_function()→setup_function()→test_jian()→teardown_function()
函数式在每个用例执行前后都会运行
三、类级setup_class和teardown_class的示例:
类运行前后,都会运行这个
四、类级setup_method和teardown_method的示例(作用和setup_function一样,只是应用范围不同,一个在method在类中,function不在类中):
类中的方法运行前后,都会运行这个
五、类里面的(setup/teardown)和类级setup_method和teardown_method的作用类似,只不过名字不同,示例如下: