学习目标:
1、pytest的不同的运行方法
2、pytest常见的命令行参数
3、如何添加自定义的pytest命令行参数
学习内容:
1、pytest的不同的运行方法
1.1主要有三种情况的运行方式:
1.1.1没有使用pytest框架,但是要运行包含test开头的用例
方法:在py文件的最后,添加main方法,使用pytest.main([‘文件名(要执行的用例)’、’参数1’、‘参数2’、‘参数n’])
例如:pytest.main(['demo.py::test','-s'])
1.1.2 已经有pytest框架,要运行test文件,直接右键放到代码的test函数上选择py.test运行即可
1.1.3 在终端运行pytest用例,直接在终端输入:pytest 文件名 参数1 参数n
1.2 如何添加pytest运行器?
方法:设置默认的运行器:file->Setting->Tools->Python Integrated Tools->项目名称->Default test runner->选择py.test
1.3 当存在pytest运行器,但是右键运行pytest用例一直默认使用python的普通运行方式时候如何处理?
方法:点击上方的设置->点击‘+’ ->python tests -> py.test-> 添加相关的信息和相关参数
2、pytest常见的命令行参数
2.1 执行特定的用例的参数
2.1.1 运行指定的函数(使用两对冒号 : 分隔)
pytest 模块名::类名::函数名,pytest demo.py::test1
2.1.2 假如期望执行的用例有唯一名或者是测试名的后缀相同,可以使用-k “关键词”定位,再结合—collect-only验证筛选情况(这个参数作用只收集用例,不执行),-k只运行与给定字符串表达式匹配的测试用例
2.2.2 如果想要把用例分组,然后一起执行相同分组的用例,可以使用-m参数。具体做法:先使用@pytest.mark.xxx给用例做标记,xx填写分组标记,这里可以自己定义不做限制。然后使用pytest -m xxx,就可以执行相关分组的用例
2.2 查看运行结果是否详细的参数(下面的比较常用就不举例了)
-s :显示标准输出,例如print()的语句;
-v :显示详细报告;
-q :显示简洁报告;
2.3 设置什么时候结束执行用例的参数
2.3.1 --m参数,正常的用例执行都是失败会跳过继续执行下个用例,如果想要失败后不执行后面的用例可以使用参数-m
注意:使用@pytest.mark参数,需要在根目录下建立一个pytest.ini文件并且写入markers选项,否则会保持war
2.3.2 --lf(last fail)参数,可以把上次执行使用的用例重新执行
2.3.3 –-ff参数,把上次执行失败的用例执行完后,在继续执行剩下成功的用例
3、如何添加自定义的pytest命令行参数
3.1 如何添加自定义参数选项
在conftest文件里面定义pytest_addoption函数,里面添加自定义的参数
parser.addoption() 参数说明
name:自定义命令行参数的名字,可以是:“foo,“-foo” 或 “–foo”;
action:在命令行中遇到此参数时要采取的基本操作类型;action=“store”:默认,只存储参数的值,可以存储任何类型的值,此时 default 也可以是任何类型的值,而且命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值;
nargs:应该使用的命令行参数的数量;
const:某些操作和nargs选择所需的常量值;
default:如果参数不在命令行中,则生成的默认值。
type:命令行参数应该转换为的类型;
choices:参数允许值的容器;
required:命令行选项是否可以省略(仅可选);
help:对参数作用的简要说明;
metavar:用法消息中参数的名称;
dest:要添加到 parse_args() 返回的对象中的属性的名称;
3.2 如何引用添加的自定义参数选项
使用fixture把要自定义的函数全局化使用,下次使用这个自定义的参数时,直接取它的返回值即可
需要使用这个自定义参数的返回值,可以在函数的参数里面加上步骤2的函数名称即可
3.3 如何设置自定义参数的默认配置
在pytest里面有两个非test文件非常重要
1、pytest.ini:pytest的主配置文件,可以改变pytest的默认行为
2、conftest.py:测试用例的一些fixture配置
在pytest.ini里面可以设置addopts参数:addopts参数可以更改默认命令行选项,这个当我们在cmd输入一堆指令去执行用例的时候,就可以用该参数代替了,省去重复性的敲命令工作
除了上述的ini配置,还可以参考这篇文章设置其他的配置:https://www.cnblogs.com/poloyy/p/12702294.html
备注:参数和值之间不能有空格
4、如何添加指定执行的case目录
4.1 pytest.ini文件下指定要执行的目录
4.2 根目录创建run_all.py文件,执行全部的文件和生产报告