Pytest执行用例规则
注意,下面讲的都是在cmd中执行pytest命令
1、某个目录下所有的用例
pytest
2、执行某一个 py 文件下用例
pytest 脚本名称.py
3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法
加v和不加-v都可以,加-v的话,打印的信息更详细
pytest -v 08_mark.py::TestClass::test_method
pytest 08_mark.py::TestClass::test_method
pytest start.py::test_answer
4、运行start.py 模块里面,测试类里面的某个方法
pytest start.py::TestClass::test_two
5、-q 简单打印,只打印测试用例的执行结果
pytest -q start.py
6、-s 详细打印
pytest -s start.py
7、-x 遇到错误时停止测试
pytest start.py -x
8、—maxfail=num
,当用例错误个数达到指定数量时,停止测试
pytest start.py --maxfail=1
9、-k 匹配用例名称
执行测试用例名称包含http的所有用例
pytest -s -k http start.py
10、-k 根据用例名称排除某些用例
1 pytest -s -k "not http" start.py
11、-k 同时匹配不同的用例名称
pytest -s -k "method or weibo" start.py
12、-k 可以用 and 表示选择名字同时包含多个关键字
pytest -k "method and weibo" -s
注意,-k 后面的名字
-
可以是测试函数的名字,可以是类的名字,可以是模块文件名,可以是目录的名字
-
是大小写敏感的
-
不一定要完整,只要能有部分匹配上就行
13、-m 标记表达式
pytest -m login
将运行用 @pytest.mark.login
装饰器修饰的所有测试
可以这样给 某个方法加上标签 login
import pytest
class Test_login:
@pytest.mark.login
def test_1(self):
print('\n用例1')
assert 1 == 1
然后,可以这样运行指定标签的用例
pytest cases -m login -s
也可以这样给整个类加上标签
@pytest.mark.login
class Test_login:
def test_1(self):
print('\n用例1')
assert 1 == 1
当然标签也支持中文
@pytest.mark.登录测试
class Test_login:
def test_1(self):
print('\n用例1')
assert 1 == 1
然后,运行命令行指定标签
pytest cases -m 登录测试 -s
可以这样同时添加多个标签
@pytest.mark.网页测试
@pytest.mark.登录测试
class Test_错误密码2:
def test_1(self):
print('\n用例1')
assert 1 == 1
可以这样定义一个全局变量 pytestmark
为 整个模块文件设定标签
import pytest
pytestmark = pytest.mark.网页测试
如果你需要定义多个标签,可以定义一个列表
import pytest
pytestmark = [pytest.mark.网页测试, pytest.mark.登录测试]
注意这里会有warnings,如此解决
- 创建一个
pytest.ini
文件 - 加上自定义mark,如下
- 注意:
pytest.ini
需要和运行的测试用例同一个目录,或在根目录下作用于全局
[pytest]
markers = login
网页测试
14.-r
该选项不但可以帮助用户了解某些测试的原因,还可以用于查看其他测试结果。
-
显示 failed 的信息
pytest -r f
-
显示 Error 的信息
pytest -r E
-
显示 skipped 的信息
pytest -r s
-
显示 xfailed 的信息
pytest -r x
-
显示 Xpassed 的信息
pytest -r X
-
显示 passed 的信息
pytest -r p
-
显示 Passed with output 的信息
pytest -r P
-
显示 all except passed 的信息
pytest -r a
pytest -r A
-
显示 warnings are enabled by default (–disable-warnings) 的信息
pytest -r w
-
重置 list
pytest -r N
评论