ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自动化测试框架系列-pytest

2022-01-02 12:58:42  阅读:154  来源: 互联网

标签:框架 assert add pytest func 自动化 test def


1.什么是pytest?

pytest是一个python的一个自动化测试框架,主要用于单元测试和功能测试。

java: junit 或者 testng

python: unittest 或者 pytest

2.pytest有哪些特点?

pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:

1.免费

2.简单灵活,容易上手,文档丰富

3.插件丰富,目前已有600+

  • pytest-selenium(集成selenium)、
  • pytest-html(完美html测试报告生成)、
  • pytest-rerunfailures(失败case重复执行)、
  • pytest-xdist(测试用例分布式执行,多cpu分发)
  • allure-pytest(用于生成美观的测试报告)
  • pytest-ordering (改变测试用例的执行顺序)

4. 支持参数化,可以有效的控制测试用例。

5. 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests。

6、可以很好的和CI工具结合,例如jenkins

7.Pytest可用于在API,数据库等上测试各种应用程序

8.Pytest能够在测试执行期间从所有测试方法中跳过一些测试方法

9.Pytest可以根据条件选择运行特定的测试方法或特定测试文件的所有测试方法

3. 如何安装pytest

首先用命令行查看是否已经安装:

pip list

如果没有安装用命令行进行安装:

pip install pytest

 检查是否安装了正确的版本:

pytest --version

 查看有哪些命令参数:

pytest --help

4. 创建测试用例

4.1 第一个测试用例-简单测试

创建一个.py 文件,写入如下代码:



def add(x,y):
    return x+y

def test1():
    assert 2==add(1,1)

def test2():
    assert 1!=add(1,1)

打开终端用pytest执行文件代码:

pytest -vv D:\pythonProject1\test_func.py 

4.2  第二个测试用例-错误测试



def add(x,y):
    return x+y

def test1():
    assert 3==add(1,1)

def test2():
    assert 1!=add(1,1)

 用pytest再次执行:

pytest -vv D:\pythonProject1\test_func.py

4.3  第三个测试用例-传入参数的异常测试

import pytest

def add(x,y):
    return x+y

def test1():
    assert 2==add(1,1)

def test2():
    assert 1!=add(1,1)

def func(x):
    if x==0:
      raise ValueError("value error")
    else:
        pass

def test_mytest1():
    with pytest.raises(ValueError):
        func(0)

def test_mytest2():
    assert func(1)==None

用pytest执行代码:

 4.4  第四个测试用例-不同参数传递测试

import pytest

def add(x,y):
    return x+y

def test1():
    assert 2==add(1,1)

def test2():
    assert 1!=add(1,1)

def func(x):
    if x==0:
      raise ValueError("value error")
    else:
        pass

def test_mytest1():
    with pytest.raises(ValueError):
        func(0)

def test_mytest2():
    assert func(1)==None

@pytest.mark.parametrize(
    "x,y,expected",
    [
        (1,1,2),
        (2,2,4),
        (10,10,20),
    ]
)

def test_add(x,y,expected):
    assert add(x,y) == expected

用pytest执行代码:

  4.5  第五个测试用例-分组测试

  如果测试文件中有100个函数,但是我仅仅想测试其中几个函数,如何去做?这就需要对这些函数进行分组,用到的命令如下:

pytest --markers

import pytest

def add(x,y):
    return x+y

@pytest.mark.a
def test1():
    assert 2==add(1,1)

@pytest.mark.a
def test2():
    assert 1!=add(1,1)

def func(x):
    if x==0:
      raise ValueError("value error")
    else:
        pass

def test_mytest1():
    with pytest.raises(ValueError):
        func(0)

def test_mytest2():
    assert func(1)==None

@pytest.mark.parametrize(
    "x,y,expected",
    [
        (1,1,2),
        (2,2,4),
        (10,10,20),
    ]
)

def test_add(x,y,expected):
    assert add(x,y) == expected

执行代码:

pytest -vv -m "a"

标签:框架,assert,add,pytest,func,自动化,test,def
来源: https://blog.csdn.net/weixin_42727710/article/details/122274656

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有