一、pytest用例管理框架
默认的用例规则
1. 模块名必须以test_开头或者_test结尾(模块名类似于nova_test_cases)
2. 测试类必须以Test开头,并不能有init方法(class Test*)
3. 测试用例必须以test开头(类似于test_nova_all_link_cases)
pytest简介
1. 可以与seleminum,requests,appium实现web、接口、APP自动化
2. 可以与allure插件结合生成美观的测试报告以及和Jenkins实现持续集成
3. 有较多强大的插件
1. pytest pytest框架
2. pytest-html 生成html报告
3. pytest-xdist 多线程插件
4. pytest-ordering 控制测试用例执行顺序
5. pytest-rerunfailures 失败重跑
6. pytest-allure 生成美观的测试报告
放到一个requirements.txt文件中,复制到代码根目录下,然后通过如下命令安装
pip install -r requirements.txt
二、运行方式详解
1. 命令行模式
在pycharm终端输入pytest运行即可
参数:
-vs -v 输出更详细的信息,-s表示输出调试信息
-n 多线程运行测试用例
--reruns 失败用例重跑
--html 生成html测试报告(pytest --html '报告生成路径,一般是/reports/report')
2. 主函数模式
新建一个run.py文件,在根目录下,如下代码直接运行即可
import pytest
if __name__=='__main__':
pytest.main()
3. 基于pytest.ini的配置文件运行
[pytest]
addopts = -vs
testpaths = ./testcases
python_files = test*.py 运行test开头的文件,想运行其他开头的文件,可以改这个
python_classes = Test*
python_functions = test_*
marks =
smoke:冒烟测试
增加标记之后可以通过如下方式只执行带标记的测试用例
addopts = -vs -m smoke
三、测试用例的前后置、固件、夹具
def setup(self):
print("在每个用例之前执行一次,比如初始化日志对象或者sql链接")
def teardown(self):
print("在每个用例执行之后执行一次,比如关闭日志对象或者sql链接")
def setup_class(self):
print("在每个类执行之前执行")
def teardown_class(self):
print("在每个类执行之后执行")
@pytest.fixture装饰器可以实现部分用例后置
@pytest.fixture(scope="",params="",autouse="",ids="",name="")
scope:作用域
function class module package/session
若scope=function,则可在用例的参数后面单独调用
若scope=class,则在类上面通过@pytest.mark.usefixture("exe_sql(即装饰器名字)")调用
yield 函数
fixture结合conftest.py文件使用