Pytest知识整理
1.pytest用例规则
-
测试文件以test_开头(以__test结尾也可以)
-
测试类以Test开头,并且不能带有init方法
-
测试函数以test_开头
-
断言使用assert
-
所有的包pakeage必须要有init.py文件
2.执行用例规则
-
1.执行某个目录下所有的用例 pytest 文件名/
-
2.执行某一个py文件下用例 pytest 脚本名称.py
-
3.-k 按关键字匹配 pytest -k "MyClass and not method"
-
4.按节点运行 test_mod.py::test_func
-
5.标记表达式 -m
-
6.从包里面运行 pytest --pyargs pkg.testing
-
7.-x遇到错误时停止测试
-
8.--maxfail=num
3.断言
-
assert
4.setup和teardown
-
模块级(setup_module/teardown_module)开始于模块始末,全局的
-
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
-
类级(setup_class/teardown_class)只在类种前后运行一次(在类中)
-
方法级(setup_method/teardown_method)开始于方法始末(在类中)
-
类里面的(setup/teardown)运行在调用方法的前后
5.执行顺序
setup_module>setup_function>teardown_function>setup_class>setup_method>setup>teardown>teardown_method>teardown_class>teardown_module
6.fixture之conftest.py(对比setup和teardown的优势)--前置
-
命名方式灵活,不局限于set和teardown
-
conftest.py配置里可以实现数据共享,不需要import就能自动找到一些配置
-
scope="module"可以实现多个.py跨文件共享前置,每一个.py文件调用一次
-
scope="session"以实现多个.py跨文件使用一个session来完成多个用例
7.fixture之yield实现teardown后置处理
-
yield遇到异常
1.如果其中一个用例出现异常,不影响yield后面的teardown执行,运行结果不影响,并且全部用例执行之后,yield呼唤teardown操作
-
如果setup就异常了,那么是不会去执行yield后面的teardown内容了