pytest基本使用

1.pytest官方文档:

  官网:https://docs.pytest.org/en/latest/
  PYPI地址:https://pypi.org/project/pytest/
  英文文档地址:https://docs.pytest.org/en/stable/
  中文文档地址:https://www.osgeo.cn/pytest/

2.pytest安装:

 <1>.如果下载镜像比较慢,可以配置国内的清华镜像源:

  pip install -U pip
  pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

 <2>.cmd窗口中执行pip install pytest:

          安装成功后,在cmd窗口输入: pip list,查看是否存在pytest:

        

 

    在python安装目录下,Scripts目录下存在pttest.exe文件

     

3.pytest的优势:

  pytest -- 基于unittest,更好的测试框架
  优势:
  1. 编写用例格式更简单
  2. 更加灵活的标签和更加好用的 firtures
   3. 插件丰富:pytest-selenium(集成selenium)、
pytest-html(完美html测试报告生成)、
pytest-rerunfailures(失败case重复执行)、
pytest-xdist(多CPU分发)
  4. 可以使用全局配置文件 pytest.ini --- 使用pytest --help指令可以查看pytest.ini的设置选项
  5. 可以很好的和CI工具结合,例如jenkins
  6. 兼容unittest用例

3.pytest的基本使用:

  <1>. 什么才是Pytest的标准测试用例?
  1. 所在的模块(文件),以test_命名
  2. 方法以test_ 或 _test命名
  3. 方法可以是普通函数,也可以是类中的成员方法
类名为 Test<xxx> 并且不能带有 init 方法

                

      

  <2>. pytest用例运行方式,pytest.main方法中的参数就是命令行中参数:
     A.pytest.main()不加参数,默认执行项目下所有test_开头的文件
      pytest.main()
     B.单个文件单独运行,需要加参数:
     #指定运行case目录下的文件,-s的意思是显示脚本中print日志信息
      pytest.main(['./cases/test_login.py', './cases/test_get_event_list.py', '-s'])

     C.跨文件运行,指定不同的文件夹执行测试用例
     pytest.main(['./login/test_login.py', './event/test_get_event_list.py', '-s'])
     D. 自定义配置文件运行,根据配置文件执行测试用例,会更加灵活
  <3>. Pytest基本命令行的使用
     无需配置额外环境变量,但是要保证你的python/Scripts目录下存在pytest.exe
     pytest --help pytest [options] [file_or_dir] [file_or_dir] […..] 1. 如果不提供任何参数,pytest会在当前路径下运行 所有测试文件中的测试方法。并且会递归遍历每个子目录 2. 指定单个或多个路径或文件名 3. 指定文件中的某个测试方法 pytest xx.py:: xx 或某个测试类
  <4>. Pytest命令行参数

       -v 输出详细执行信息

       --collect-only  展示在给定的配置下,哪些测试用例会被执行

          -k 使用表达式指定希望运行的测试用例

          -m 运行某个标记后的测试用例组

          @pytest.mark.xxx(标记名)

          pytest –m ‘xxx’     ‘xxx and yyy’    ‘xxx and not yyy’

          https://docs.pytest.org/en/latest/mark.html    

      -s  展示print日志信息

          -x  遇到失败用例停止运行。用于debug

                    --maxfail=num 失败num次后,停止运行测试

         --lf 当一个或多个用例失败时,定位到最后一个失败的用例,并重新执行它

         --ff 与lf作用基本相同,不同点是会运行完剩余的用例

        --html path 出html报告,pytest自带的测试报告,比较丑,推荐结合allure出比较好看的测试报告

    <5>.Pytest中的测试结果分类:

       .(PASSED):测试通过

       F(FAILED):测试失败

       s(SKIPPED):测试未执行

       x(xfail):预期测试失败

       X(XPASS):预期测试失败,运行成功但不符合预期

       E(ERROR):测试用例之外的代码触发了异常

  <6>. 使用断言
	  Pytest并没有像unittest一样封装assert语句,而是鼓励用户使用
	  Python的原生断言 关键字 assert
	  assert  用法:直接在assert关键字后面添加 任意布尔值表达式
    	  assert  a==b,msg='xxxxx' 当布尔表达式为false时,打印msg信息
	  assert  a>b

           

  <7>. pytest+allure出测试报告,allure会将测试用例的执行数据保存到xml文件中去,再利用allure的命令行将文件转换成HTML形式呈现出来

       1.安装allure:
        官网:http://allure.qatools.ru/,下载allrue,解压得到allure-commandline-2.13.3文件,将bin目录加入系统环境变量中
        cmd窗口输入:allure --version,显示版本号即安装成功

        

 

         2.安装allure-pytest:

        pip install allure-pytest

         3.pytest+allure出测试报告:

          1.pytest 执行测试,参数 allure=/(pytest allure报告插件路径 pip安装) 保存中间数据文件 json xml

          2.allure命令行(工具包解压缩你的路径下,bin环境变量 allure命令行可以使用) 指定数据文件路径 生成html测试报告

 

 


posted @ 2021-01-29 01:55  maxwell11  阅读(536)  评论(1编辑  收藏  举报