Python_pytest学习笔记

2018-11-10  本文已影响39人  成功在于实践
Snipaste_2018-11-10_00-50-36.png

第一节课
pytest基本介绍

 pytest安装包安装:           
      1.进入下载包路径
      2.python setup install 
      
 命令行安装:
      1.mac/linux:sudo pip3 install -U pytest # -U:可以理解为--upgrade
      2.管理员方式运行cmd:pip3 install -U pytest
  
  
Pytest运行方式: 
     1.测试类主函数模式: pytest.main("-s  test_abc.py")
     2.命令行模式:       pytest 文件路径/测试文件名
    
断言:函数内部使用assert判断要断言内容

第二节课
pytest配置
1.命令行参数 addopts = -s —reruns n —html=路径/xx.html # 命令之间空格分隔
2.搜索路径:testpaths = 脚本存放的路径
3.搜索文件名:python_files = test_*.py

 4.搜索测试类名:python_classes = Test_*
 5.搜索方法名:python_functions = test_*

第三节课
pytest插件
1.pytest-html: 生成测试报告
安装:pip3 install pytest-html
使用:跟在命令行里,pytest 测试文件 —html=路径/xx.html

    2.pytest-ordering: 控制测试函数运行顺序
        使用:函数修饰 @pytest.mark.run(order=x)
        x:
           1.全为正数 或者 全为负数 值越小 优先级越高,意味着最先执行
           2.正数和负数同时存在,正数优先级高
           3.值为负数时,优先级低于没被标记的测试方法
           4.值为正数时,优先级高于没被标记的测试方法
           
       
    3.pytest-rerunfailures : 失败测试函数重试机制
        使用:在命令行参数中配置:—reruns n 
        n:重试次数

第四节课

fixture修饰器来标记固定的工厂函数,在其他函数,模块,类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作。
    方法:fixture(scope="function", params=None, autouse=False, ids=None, name=None)
    常用参数:scope:被标记方法的作用域
       "function" (default):作用于每个测试方法,每个test都运行一次
       "class":作用于整个类,每个class的所有test只运行一次
    params:(list类型)提供参数数据,供调用标记方法的函数使用
    autouse:是否自动运行,默认为False不运行,设置为True自动运行 
    
使用:
1.标记工厂函数: @pytest.fixture()
    1.参数引用:写在测试函数的参数内
    2.函数引用:@pytest.mark.usefixtures(“工厂函数名”)
2.自动运行:
    autouse:设置为True会根据scope来去自动运行工厂函数
3.参数
    fixture的params参数,params类型必需是列表  

第五节课

练习:
    1.进入设置
    2.点击搜索按钮
    3.使用fixture的params方法提供的三个参数值

第六节课
跳过测试函数:根据特定的条件,不执行标识的测试函数.
方法:skipif(condition, reason=None)
参数:
condition:跳过的条件,必传参数
reason:标注原因,必传参数
使用方法: @pytest.mark.skipif(condition, reason="xxx")

标记为预期失败函数:
方法:xfail(condition=None, reason=None, raises=None, run=True, strict=False)
    常用参数:
        condition:预期失败的条件,必传参数
        reason:失败的原因,必传参数
    使用方法: @pytest.mark.xfail(condition, reason="xx")
    
    
pytest函数数据参数化parametrize:
     1.单个参数:@pytest.mark.parametrize(‘参数名’,参数值)
      注意: 
       参数值:[值1,值2,….]
       有多少个参数值方法会运行多少次
     2.多个参数:@pytest.mark.parametrize(‘参数1,参数2,....’,参数值)
      注意:
       1.多个参数需要逗号分隔
       2.参数值:[(参数1的值,参数2的值,..),()…]
     3.参数值可以通过函数返回值使用:@pytest.mark.parametrize(‘参数1,参数2,....’,函数返回值)
     4.测试函数的参数必须等于parametrize表示参数
# pytest.ini
[pytest]

# Search Params
addopts = -s
;addopts = --reruns n
;addopts = -s --html=./report/test.html
;addopts = -s --junitxml=./report/test1.xml

;# Search Path
;testpaths =
;
;# Search File
;python_file = demo*.py
;
;# Search Class
;python_classes = Test_*
;
;# Search Function
;python_functions = test_*   
上一篇下一篇

猜你喜欢

热点阅读