pytest框架

Posted fengliting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest框架相关的知识,希望对你有一定的参考价值。

 技术图片

 

 

 pytest相对unittest来说,有很多优点,比如pytest有大量的插件,用例失败可以定义重新执行几次....

 

前置:安装pytest;

  使用pycharm打开settings,在project点击+搜索pytest后点击install即可

  技术图片

 

 

 

 

 

一、pytest的命名规则:

  1、运行的.py文件必须已test开头或者结尾

  2、class类必须以test开头或者结尾

  3、def 后面函数必须以test开头或者结尾

  技术图片

 

 

 

二、运行

   pytest框架运行有多种多样,

  1、写好py文件后,在cmd命令行输入:pytest xxx.py

    这种运行方式只提示运行pass或者fail,不过可以在后面添加参数

    -s :显示在测试函数中的print函数输出

    -v:显示每个测试函数结果

    -q:只显示整体结果

  2、

  我常用的是以下的一种

  在.py目录下创建有pytest.ini配置文件,内容如下:注意,开ini配置文件下最好不要有中文,不然可能会报:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xb0 in position 24: illegal multibyte sequence

  技术图片

 

   addopts:后面加运行输出参数,如-s,-v,-q,还有一些插件的参数,如图中:

      -s:表示输出测试函数中print输出

      --html=./report.htm:在当前运行目录下生成assets文件夹和report.html测试报告,需要下载pytest-html插件,在settings/project里查找下载即可

      -reruns 2 : 当测试函数运行失败后重新运行两次,需要下载pytest_rerunfailures插件,同上,也是在setting/project下载即可

  运行:在Terminal里面输入pytest运行即可:

  技术图片

 

 

三、函数编写:

  

class 类名:

def 初始化函数:

def 测试函数:

初始化函数:用来初始化测试环境等等

      setup------>teardown: 每个测试函数运行前后各运行一次:

      技术图片

 

       setup_class------>teardown_class: 每个测试类运行前后各运行一次:

       

      技术图片

 

 

  @pytest.fixture:修饰固定函数,通常用来完成前置操作,功能类似与setup、setup_class

        参数:scope=?

                class;每个类运行前运行

                function:每个测试函数运行前运行

                module:少用

                session:少用

           params:list类型,用来参数化

           autouse=?

                True:自动运行

                False:默认false,不自动运行

 

      例1:function

      技术图片

 

        技术图片

 

 

      例子2:class

      技术图片

 

        技术图片

 

      例子3:参数化params

        技术图片

 

 

      技术图片

 

 

参数化还有一种修饰方法:

  @pytest.mark.parametrize(”参数函数“,list表)

  list表里有多少个参数,修饰的函数就会运行多少次

  技术图片

 

    技术图片

 

 多个参数:

  技术图片

 

    技术图片

 

 

四、断言

  assert  判断式

  在pytest里断言比较简单些,只判断真或假,没有unittest那么多

 

 

 

以上是关于pytest框架的主要内容,如果未能解决你的问题,请参考以下文章

代码质量保证-单元测试框架pytest

pytest接口自动化测试框架 | 用python代码测试接口

python pytest测试框架介绍三

pytest框架

手把手教你pytest测试框架—— 初识框架

python - pytest