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函数的信息
注意要在当前目录下存在文件)
5:运行某个模块里面的某个测试类:pytest -v 文件名.py::测试类名
pytest -v test_01.py::TestDemo
6:运行某个模块里面的某个测试类某个测试方法:pytest -v 文件名.py::测试类名::测试方法名
pytest -v test_01.py::TestDemo::test_one
7:-k
运行匹配包含02的测试用例
pytest -v -k '02'
运行包含02和03的用例--or
pytest -v -k '02 or 03'
跳过指定的测试用例:pytest -v -k "类名 and not 测试方法名"
pytest -v -k "TestDemo01 and not test_three"
8:运行带标记的测试方法@pytest.mark.标记名
@pytest.mark.smoke
pytest -v -m smoke
报错就就停止运行: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
14:收集用例不运行统计用例总数pytest --collect-only
15:按指定顺序执行
python3 -p pip install pytest-ordering run标签
@pytest.mark.run(order=1) @pytest.mark.run(order=2)
order=1>order=2先执行,然后顺序执行
16:pytest.ini配置文件改变执行规则--先下载ini插件
配置ini规则---生成报告和修改默认的识别规则
识别以adb开头的py文件,类以Login开头,测试用例以case打头
[pytest]
addopts=-vs --alluredir ./report
python_files='abc_*.py'
python_classes='Login*'
python_functions='case*'
17,python导入依赖包
1:生成 requirements.txt 文件,用于记录所有依赖包及其精确的版本号
python3 -m pip freeze >requirements.txt
2:下载依赖包
python3 -m pip install -r requirements.txt
3:pycharm设置pytest运行
1:运行单个测试用例
同一包下所有测试模块的测试用例
3:执行特定的命令(和cmd下执行一样)
if __name__ == '__main__':
pytest.main(['-v'])
pytest.main(['-vxs','test_02.py::TestDemo02::test_one'])
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(不在类中,在普通方法调用前运行)