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那么多

 

 

 

posted @ 2020-07-10 18:26  冯立挺  阅读(229)  评论(0编辑  收藏  举报