pytest中setup_function与teardown_function未逐用例调用问题
问题原因及解决办法
1. 钩子函数名拼写错误
你的teardown_function函数名写错了,代码里写成了teradown_function(少了字母w),pytest无法识别这个错误命名的钩子函数,所以不会执行它。
2. pytest默认捕获输出导致打印内容不可见
pytest默认会捕获测试过程中的print输出,即便setup_function正常执行,你也看不到打印的内容。需要在执行命令时添加-s参数禁用输出捕获:
python -m pytest -v -s
3. 钩子函数参数(可选优化)
setup_function和teardown_function可以接受一个参数(代表当前执行的测试函数),但如果不需要用到该参数,可以直接省略,简化为:
def setup_function(): print("set up is called") def teardown_function(): print("teardown is called..")
修正后执行效果
修正函数名并使用python -m pytest -v -s命令执行后,每个运行的测试用例(包括参数化的test_1的两个实例)执行前后都会打印setup和teardown的内容,被跳过的用例不会触发这两个钩子。
内容的提问来源于stack exchange,提问作者Shankar
相关产品推荐
相关产品推荐

