1.pytest框架初识

pytest是什么?

  • pytest是基于unittest开发的另一款更高级更好用的单元测试框架

 

为什么要用pytest?

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 能够支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  5. 支持重复执行(rerun)失败的 case
  6. 支持运行由 nose, unittest 编写的测试 case
  7. 可生成 html 报告
  8. 方便的和持续集成工具 jenkins 集成
  9. 可支持执行部分用例
  10. 具有很多第三方插件,并且可以自定义扩展

 

pytest框架执行流程

 

  1、执行操作

    安装 pip install requests -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com   (这里使用的是豆瓣源,安装起来很方便)

    查看  pip show pytest 

    文件名是conftest.py的,在运行同目录下的其他用例文件时,这个文件也会被运行

  2、参数化(excel用例)

  3、报告生成

 

pytest框架注意事项

1、.py测试文件必须以test_开头(或以_test结尾)

2、测试类必须以Test开头,并且不能有init方法

3、测试方法必须以test开头

4、断言必须使用assert,断言失败后,同一个方法的后面的语句就不会执行

 

 搭建项目

  目录

    1、testcase--放测试用例(代码) -建package 、这个目录下的类和方法才需要Test和test开头

    2、Lib--库--放一些模块的-建package      这个目录下的类和方法不需要Test和test开头

    3、报告--log、html

    4、data--放测试用例(excel文件)

    5、config--放配置文件

 

运行pytest的方法: 

1、在pycharm里的终端,进入需要运行用例的目录

 pytest  运行用例命令     (-s是输出打印内容)

2、不想在终端运行在pycharm中运行,在要执行的用例文件中加入:

if __name__ =="__main__":

  pytest.main(['-s'])

3、生成pytest原生态的报告  ,首先需要  pip install   pytest-html   ,在控制台输出的命令如下:  

pytest  test_login.py  -s   --html=report.html  

 

 

环境初始化和环境清除

在pytest中有四种setup和teardown

例如:def setup_class(self):

    session=类().方法(传参)

注意:

1.setup_module和teardown_module在整个测试用例所在的文件中所有的方法运行前和运行后运行,只会运行一次

2.setup_class和teardown_class则在整个文件中的一个类中所有用例的前后运行

3.setup_method和teardown_method则在类里面的每个方法运行前后运行

4.setup_function和teardown_function则是在非类下属的每个测试方法的前后运行

 

 了解:

一、概念理解

requests库注意点

data和json参数都可以传字典

1、json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)
  (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串(json))
  (2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)

2、json.dump()和json.load()主要用来读写json文件函数

 

注意:data的优先级比json高,如果请求入参里有data和json,会把json忽视

口诀一:params参数,如果传入的是字典,自动编码为表单 ---针对get方法
口诀二:data参数,如果传入的是字典,自动编码为表单 ---针对的是post/put方法
口诀三:data参数,如果传入的是字符串,按原格式直接发布出去 ---针对的是post/put方法

口诀四:json参数,如果传入的是字典,自动编码为json字符串---针对的是post/put方法 就是 json = json.dumps(dict)
口诀五:json参数,如果传入的是字符串,按原格式基础上添加双引号发布出去 ---针对的是post/put方法 不常用

 

 

 

注意:

如果方法中带有self,则调用类时,类名().方法(方法入参1,方法入参2)    --这是类的实例化方法

如果方法中不带有self,则调用类时,类名.方法(方法入参1,方法入参2)

 

 

 

 

 

posted @ 2020-08-23 20:23  小boboa  阅读(110)  评论(0编辑  收藏  举报