自动测试框架Py.test介绍

Pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效,支持315种以上的插件,同时兼容 unittest 框架。这就使得我们在 unittest 框架迁移到 pytest 框架的时候不需要重写代码。接下来我们在文中来对分析下 pytest 有哪些简洁、高效的用法。
pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:

1、简单灵活,容易上手,文档丰富;
2、支持参数化,可以细粒度地控制要测试的测试用例;
3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
5、测试用例的skip和xfail处理;
6、可以很好的和CI工具结合,例如jenkins
首先使用 pip 安装 pytest

pip3 install pytest

查看 pytest 是否安装成功

pip3 show pytest

Py.test相比unittest只有setUp()和tearDown(),pytest则拥有module级别、class级别、method和function级别的setup()和teardown(),能够更好地控制用例的执行。

  1. setup_module()和teardown_module
    如果在一个.py文件中有多个测试函数和测试类,并且只想执行执行一次setup和teardown,则可选择在该文件中使用setup_module和teardown_module。
    ps:pytest3.0中,“_module”可省略


    image.png
  2. 同样地,如果一个测试类中有多个测试方法,并且只想执行一次setup和teardown,则可选择在该类中使用setup_class和teardown_class。
image.png

3. Py.test 常用annotation总结如下;

Py.test 框架基础的注解如下;

  • usefixtures -在测试函数或类上使用fixture

  • filterwarnings -过滤测试函数的某些警告

  • skip -总是跳过测试函数

  • skipif -如果满足某个条件,则跳过测试函数

  • xfail -如果满足某个条件,则产生“预期失败”结果。

  • parametrize -对同一测试函数执行多个调用。

ALLURE 常用注解基本特性使用

@allure.feature(‘测试xiadan的撤单’) — 撤单模块

@allure.story(‘多笔撤单功能’) —子功能模块,测试用例类

@allure.step(“测试步骤”) ----引用某个函数作为操作步骤的时候使用

with allure.step(): ---- 写在测试用例函数里面
pass

添加文本说明或者附件

*@allure.title(‘子标题,市价买入页面多笔撤单’) --该用例标题

*@allure.severity(allure.severity_level.BLOCKER) --用例的级别

*@allure.testcase(url=‘https://www.baidu.com’,name=‘用例链接显示的名称’)

*@allure.issue(url=‘https://www.baidu.com’,name=‘bug管理平台’)

*@allure.attach(bady,name.attachment_type) //附加文件信息

*@allure.attach.file(source=‘源文件’,name=显示名称,attachment_type=文件类型)

以上@allure需在def或class前或函数中使用,也可使用allure.dynamic.title('title')在用例中动态添加.

4. 生成测试报告

pytest.main([‘--html=./report.html’,‘模块.py::类::test_a_001'])
运行指定模块指定类指定用例,冒号分割,并生成测试报告

pytest.main(['-x','--html=./report.html','t12est000.py'])

-x出现一条测试用例失败就退出测试

-v: 丰富信息模式, 输出更详细的用例执行信息
-s:显示print内容
-q: 简化结果信息,不会显示每个用例的文件名

pip install pytest-cov # 计算pytest覆盖率,支持输出多种格式的测试报告
pytest --cov-report=html --cov=./ test_code_target_dir

你可能感兴趣的:(自动测试框架Py.test介绍)