Pytest初识命令行参数
pytest学习的初衷就是目前大多数写自动化脚本都会用到这个。
其实在学习之前,想做平台的自动化测试,考虑是否还需要这个框架呢?
作为学习的目标,不管用不用,都要经历这么一个工具学习过程。才对得起测试这个行业,毕竟大家认识的才是王道。
百度了下有关pytest的相关资料:
- 1、简单灵活,容易上手,文档丰富;
- 2、支持参数化,可以细粒度地控制要测试的测试用例;
- 3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
- 4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
- 5、测试用例的skip和xfail处理;
- 6、可以很好的和CI工具结合,例如jenkins
安装:pip install pytest
如果想让pytest执行脚本生效,执行的文件和函数,必须以test开头或者结尾,才可被执行。
命令行参数
--collect-only
pytest --collect-only #可以获取当前目录下及子目录下的符合要求的测试用例,只是展示,不执行,作为一种参照。
-k
pytest -k "test01" #获取指定运行测试用例,名称是唯一的就会被执行。
-m
pytest -m run_user #给函数加上装饰器用来做标记,给标记起名比如 run_user,所有被标记的用例会被执行
#在函数上加上装饰器被打上标签标记,格式必须是以@pytest.mark.标记名称
@pytest.mark.run_user
def test_01():
pass
-x
pytest -x #方便用于调试的参数,当使用此参数时,如果遇到失败的用例,运行就会停止。
-maxfail
pytest -maxfail=3 #作用与-x相同,不同的是可以设置失败数量,当执行用例失败等于3个的时候,运行就会停止。
-s
pytest -s #输出调度信息,比如logger,print 都会被打印出来
--lf
pytest --lf #只运行上次失败的用例,如果没有就全部执行
--ff
pytest --ff #运行全部用例,但会优先执行上次失败的用例
-v
pytest -v #输出更详细的信息,比如函数名等
-q
pytest -q # 简化输出控制台信息,少了session starts部分内容
-l
pytest -l #当用例执行失败,会把对应的变量信息输出到控制台显示
-tb
pytest --tb=参数(choose from 'auto', 'long', 'short', 'no', 'line', 'native') # 用于输出信息选择
--durations=num
pytest --durations=0 #统计运行所用用例中执行最慢的,如果等于0时,会按照消耗时间由长到短显示,显示出消耗的时间,耗时非常少的就会被隐藏不显示
--version
pytest --version #输出pytest的版本
-h
pytest -h #显示所有的参数命令