1:pytest安装,识别,运行
1:pytest安装
python3 -m pip install pytest
验证:pytest --version
2:pytest测试用例的识别与运行
识别:
1:测试文件(模块)以test_*.py或*_test.py
2:测试类以Test*命名,测试用例以test_*的方法,
3:不在测试类的所有test_*的用例方法
执行:
1:pytest:执行该命令目录下的所有测试模块下的测试用例(默认是从上到下顺序执行)
2:pytest -v:打印详细的执行结果(会展示错误信息)
3:pytest -v -s:会打印详细执行结果和print函数的信息
4:执行单独的一个py文件:pytest -v 文件名.py(注意要在当前目录下存在文件)
5:运行某个模块里面的某个测试类:pytest -v 文件名.py::测试类名
pytest -v test_01.py::TestDemo
6:运行某个模块里面的某个测试类某个测试方法:pytest -v 文件名.py::测试类名::测试方法名
pytest -v test_01.py::TestDemo::test_one
7:跳过指定的测试用例:pytest -v -k "类名 and not 测试方法名"
pytest -v -k "TestDemo01 and not test_three"
8:运行带标记的测试方法@pytest.mark.标记名
@pytest.mark.smoke
pytest -v -m smoke
9:运行报错就就停止运行:pytest -v -x 文件名.py
pytest -v -x test_01.py
10:当用例执行错误达到指定的数量时,停止运行:pytest -v --maxfail=数量
pytest -v --maxfail=2
11:失败重新运行:
安装:python3 -m pip install pytest-rerunfailures
pytest -v --reruns 重跑次数 --reruns-delay 每次重跑相隔时间
pytest -v --reruns 重跑次数 --reruns-delay 每次重跑相隔时间 -s 文件名.py
1:跑全部:pytest -v --reruns 3 --reruns-delay 1
2:跑单个模块
pytest -v --reruns 3 --reruns-delay 1 -s test_01.py
12:多条断言有失败也都能运行(通常第一条过不去,下面的断言就不执行了),断言报错也向下执行
安装:python3 -m pip install pytest-assume
13:简单的显示运行结果: pytest -q
3:pycharm设置pytest运行
1:运行单个测试用例
2:执行全部测试用例:pytest.main()
3:执行特定的命令(和cmd下执行一样)
if __name__ == '__main__':
pytest.main('-v -x ')
4:断言---pytest 里面断言实际上就是 python 里面的 assert 断言方法,常用的有以下几种
- assert xx :判断 xx 为真
- assert not xx :判断 xx 不为真
- assert a in b :判断 b 包含 a
- assert a == b :判断 a 等于 b
- assert a != b :判断 a 不等于 b
5:pytest框架结构
模块级:setup_module/teardown_module(优先级最高---全局前后)
类级别:setup_class/teardown_class(类中---测试类之前运行)
方法级别:setup_method/teardown_method(类中---在方法开始前(未调用方法)运行)
方法级别:setup/teardown(类中---在方法调用之前运行)
普通函数:setup_function/teardown_function(不在类中,在普通方法调用前运行)