Pytest 1

1. Pytest简介

   pytest是一个非常成熟的全功能的Python测试框架。

(1) 主要特点有以下几点:

  • 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

 Pytest与Robotframework相比,更加适合小公司。

(2) pytest有哪些优点?

  • 允许直接使用assert进行断言,而不需要使用self.assert*;
  • 可以自动寻找单测文件、类和函数;
  • Modular fixtures可以用于管理小型或参数化的测试信息;
  • 与unittest和nose单测框架兼容;
  • 兼容性较好,支持Python 2.7,Python 3.4+。
  • 丰富的插件支持,共计有超过315个插件支持;

2. 使用虚拟环境做Pytest测试

     安装虚拟环境模块并创建虚拟环境

pip install virtualenv
pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用该命令

mkvirtualenv venv(安装虚拟环境的路径及目录名)

     之后再次进入时,需要激活虚拟环境

cd venv/scripts
activate.bat

     激活后会在左边显示(虚拟环境目录)

3. Pytest 安装相关模块

pip install pytest 
pip install pytest-html
pip install pytest-rerunfailures

        此外还有很多很好的第三方插件,请到http://plugincompat.herokuapp.com/ 和 https://pypi.python.org/pypi?%3Aaction=search&term=pytest-&submit=search 查找

4. Pytest Demo

    (1) 在虚拟环境中创建一个文件夹来存储测试代码,例如code.

    文件夹中创建测试代码(code est_sample.py)

# content of test_sample.py
def inc(x):
    return x + 1

def test_answer():
    assert inc(3) == 5

    code est_class.py

# content of test_class.py

class TestClass:
    def test_one(self):
        x = "this"
        assert 'h' in x

    def test_two(self):
        y = "this"
        assert hasattr(x, 'check')

    (2) 使用pytest执行测试。

    在虚拟环境的code路径下,cmd执行:

py.test

(3) pytest执行说明

# 默认会执行当前目录及子目录的所有test_*.py或*_test.py文件。用例执行成功为.,失败为F
$ pytest
# 静默执行
$ pytest -q 01	est_sample.py
# 调试方式执行,可以打印print日志等详情信息
$ pytest 01	est_sample.py -s -v
# python模块方式执行
$ python -m pytest 01	est_sample.py
# 执行单个目录下的tests
$ python 01

(4) pytest 常见的exit code

  Exit code 0 所有tests全部通过

  Exit code 1 部分tests失败了

  Exit code 2 用户中止test执行

  Exit code 3 执行test时,内部报错

  Exit code 4 pytest命令使用姿势不对

  Exit code 5 无tests可执行

(5) pytest 常见帮助选项

$ pytest --version      # 显示版本信息
$ pytest --fixtures     # 显示内置可用的函数参数
$ pytest -h | --help    # 显示帮助信息
$ pytest -x             # 第一个失败时即停止
$ pytest --maxfail=2    # 两个失败后即停止

      

5. Pytest 生成日志

    在code平行层级创建Log目录。运行一下命令以运行并生成指定日志。

(pyTest2) E:1workspacevenvpyTest2code>py.test --resultlog=../Log/b.html

6. Pytest 生成报告

    在虚拟环境中执行:

pip install pytest-html

    在code平行层级创建Report目录。执行以下命令以生成html格式报告。

(pyTest2) E:1workspacevenvpyTest2code>py.test --html=../Report/b.html

 

    在code平行层级创建Report目录。执行以下命令以生成xml格式报告。

(pyTest2) E:1workspacevenvpyTest2code>py.test --junitxml=../Report/b.xml

参考网址:

pytest官方网站 - https://docs.pytest.org/en/latest/index.html

pytest详解 - https://www.jianshu.com/p/a754e3d47671

生成报告 - https://blog.csdn.net/liuchunming033/article/details/48137813?utm_source=blogxgwz0  -

pytest 多种用法 - https://www.cnblogs.com/jinzhuduoduo/articles/7017405.html

pytest学习笔记(非完整版) - https://www.jianshu.com/p/b825addb4e16

原文地址:https://www.cnblogs.com/keepSmile/p/10932336.html