包含python如何测试函数的词条

Python - pytest目录
pytest是Python的单元测试框架,同自带的unittest框架类似,但pytest框架使用起来更简洁,效率更高 。
pytest特点
安装
测试
在测试之前要做的准备
我的演示脚本处于这样一个的目录中:
踩坑:你创建的pytest脚本名称中不允许含有. , 比如1.简单上手.py , 这样会报错 。当然,可以这么写1-简单上手.py
demo1.py :
上例中,当我们在执行(就像Python解释器执行普通的Python脚本一样)测试用例的时候 , pytest.main(["-s", "demo1.py"]) 中的传参需要是一个元组或者列表(我的pytest是5.2.2版本),之前的版本可能需要这么调用 pytest.main("-s demo1.py")  , 传的参数是str的形式,至于你使用哪种 , 取决于报不报错:
遇到上述报错,就是参数需要一个列表或者元组的形式,而我们使用的是str形式 。
上述代码正确的执行结果是这样的:
大致的信息就是告诉我们:
pytest.main(["-s", "demo1.py"])参数说明
除了上述的函数这种写法 , 也可以有用例类的写法:
用法跟unittest差不多,类名要以Test 开头,并且其中的用例方法也要以 test 开头,然后执行也一样 。
执行结果:
那么,你这个时候可能会问,我记得unittest中有setup和teardown的方法,难道pytest中没有嘛?你怎么提都不提?稳?。鸢甘怯械?。
接下来,我们来研究一下pytest中的setup和teardown的用法 。
我们知道,在unittest中,setup和teardown可以在每个用例前后执行,也可以在所有的用例集执行前后执行 。那么在pytest中,有以下几种情况:
来一一看看各自的用法 。
模块级别setup_module/teardown_module
执行结果:
类级别的setup_class/teardown_class
执行结果:
类中方法级别的setup_method/teardown_method
执行结果:
函数级别的setup_function/teardown_function
执行结果:
小结
该脚本有多种运行方式,如果处于PyCharm环境,可以使用右键或者点击运行按钮运行,也就是在pytest中的主函数中运行:
也可以在命令行中运行:
这种方式,跟使用Python解释器执行Python脚本没有什么两样 。也可以如下面这么执行:
当然 , 还有一种是使用配置文件运行,来看看怎么用 。
在项目的根目录下,我们可以建立一个pytest.ini 文件 , 在这个文件中,我们可以实现相关的配置:
那这个配置文件中的各项都是什么意思呢?
首先,pytest.ini 文件必须位于项目的根目录,而且也必须叫做 pytest.ini。
其他的参数:
OK , 来个示例 。
首先,(详细目录参考开头的目录结构)在scripts/test_case_01.py 中:
在scripts/test_case_dir1/test_case02.py 中:
那么,在不同的目录或者文件中,共有5个用例将被执行,而结果则是两个失败三个成功 。来执行验证一下,因为有了配置文件,我们在终端中(前提是在项目的根目录) , 直接输入pytest 即可 。
由执行结果可以发现,2 failed, 3 passed,跟我们的预期一致 。
后续执行相关配置都来自配置文件,如果更改,会有相应说明,终端都是直接使用pytest 执行 。
我们知道在unittest中,跳过用例可以用skip,那么这同样是适用于pytest 。
来看怎么使用:
跳过用例,我们使用@pytest.mark.skipif(condition, reason) :
然后将它装饰在需要被跳过用例的的函数上面 。
效果如下:
上例执行结果相对详细,因为我们在配置文件中为addopts 增加了 -v,之前的示例结果中 , 没有加!

推荐阅读