代码改变世界

pytest框架学习整理

2023-06-19 10:20  HQS_blog  阅读(56)  评论(0)    收藏  举报

1.python的测试框架

  pytest   --有丰富的插件,需掌握编程语言,灵活性强

  framework  --不用掌握编程语言,主要靠关键字驱动,灵活性不强

  unitest  --python自带的框架

2.启动和安装pytest

  2.1安装pytest

    pip install pytest

  2.2pytest执行测试用例的标准

    1.模块(py文件)需满足名称为test_.*py,或*_test.py

    2.类需以Test开头,并且不能有__init__.py  (__init__的作用是让当前类的所有方法可公用数据对象,与测试用例的目的不一致)

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

    4.测试包中必须包含__init__.py

  2.3启动pytest

    在命令行中输入pytest

    python代码中执行pytest.main()

    pycharm提供了testrunner

3.pytest的参数 

  1.-v 查看测试用例执行的详情,具体执行了哪些py文件下的哪些测试用例以及测试结果

  2.-s 关闭捕获标准输出,没有这个参数时,测试用例执行失败时,才会输出当前用例中的打印内容

  3.--reruns x 在测试用例执行失败的情况下会重新执行x次,直至失败

  4.--html=文件名称.html  生成html测试报告到当前路径的名称下

  可将pytest的参数配置在pytest.ini文件中,在命令行执行执行python则自动调用

    [python]

    - v -s --reruns 2 --html=report.html

4.pytest的fixture装饰器

  1.fixture的使用方法

    1.在函数方法上使用@pytest.fixture

    2.需要使用该装饰器的测试用例中以传参的方式传入上述装饰器的方法名称

  2.fixture的范围

    function  class  module  package  session  从小到大自动控制处于该范围的测试用例方法

    session则表示在所有测试用例前后执行一次

    function则表示在所有方法前后执行一次

  3.fixture是怎样执行的

    fixture是由pytest控制的,会在测试函数运行前后执行

  4.fixture一般写在conftest.py文件中,conftest.py是fixture的集合

  5.fixture还可以传递参数

    

import pytest

@pytest.fixture( params = [
("www.baidu.com", "百度"),
("qq.com", "腾讯")
])
def _test_data(request): #request是pytest的内置fixture 可以获取请求参数等信息,实现fixture的参数化
return request.param

def test_url_name(_test_data):
url, name = _test_data #元组拆包
print(url)
print(name)