Pytest

Pytest

简介

  1. python单元框架

  2. 可以和selenium、requests、appium结合实现Web自动化,接口自动化,app自动化

  3. pytest可以实现测试用例的跳过及returns失败用例重试

  4. 和allure生成美观二点测试报告

  5. 和jeckins持续集成

  6. 常用插件

    • pytest-html: 生成html格式的自动化测试报告
    • pytest-xdist:测试用例分布式执行,多cpu分发
    • pytest-ordering: 用于改变测试用例的执行顺序
    • pytest-rerunfailures: 用例失败后重跑
    • allure-pytest 用于生成测试报告
  7. 默认规则:

    以test_*.py *_test.py

    不输出任何打印信息,-s 指令打印

参数详解

-s : 表示输出调试信息,包括print打印信息

-v: 显示跟详细的参数,, -vs 这两个可以连用

-n: 支持多线程或者分布式运行测试用例(-n 2)两个线程

–returns NUM: 失败用例重跑次数

-x: 只要一个用力报错,那么测试停止。

–maxfail=2: 出现两个用例失败就停止

-k: 指定测试用例,, -k “some_str” 比对测试函数名,

–html ‘path’ 生成html测试报告

-rA: 简单统计

-m: 标记,执行分组的标记

pytest.ini

pytest.ini 这个文件它是pytest单元测试框架的核心配置文件

1、位置:一般放在项目的根目录

2、编码:必须是ANSI

3、作用:改变默认测试行为

4、运行规则:从ini文件中读取

[pytest]

addopts = -vs
# 测试用例文件夹,可自己配置
testpaths = ./testdemo
# 配置测试的模块文件名称
python_files = test*.py
# 配置测试搜索的测试类名
python_classes = Test*
# 配置测试搜索的测试函数名
python_functions = test

标记执行顺序

pytest-ordering

@pytest.mark.run(order=3)

分组执行

smoke: 冒烟用例,分布在各个模块里面

markers = 
	smoke: 冒烟用例
	users: 用户相关

@pytest.mark.smoke

@pytest.mark.users

pytest -vs -m "smoke"

pytest -vs -m "smoke and users" pytest -vs -m smoke,users

跳过用例

无条件跳过

@pytest.mark.skip(reason=“reason”)

有条件跳过

@pytest.mark.skipif(age >=18, reason=“reason”)

批量传参运行

@pytest.mark.parametrize(‘args_name’, ‘args_value’)

import pytest

class TestApi:
    
    # 本质拆包,匹配
    @pytest.mark.parametrize('args', ['data1', 'data2', 'data3'])
    def test_01_api(self, args):
        print(args)
        

YAML文件—接口自动化

1、用于全局的配置文件 ini/yaml

2、用于写测试用例

zhangsan: {age: 18, hobby: "dance"}

yaml_util.py

class YamlUtil:
    def __init__(self, yaml_file):
        
        self.yaml_file = yaml_file
    
    def read_yaml():
        with open(self.yaml_file, encoding="utf-8") as f:
        	value = yml.load(f,stream, Loader=None)
        
        return value

setup teardown

可以通过配置文件管理

参数:

  • scope: 4种等级(默认等级 function)

    ​ session: 在本次session级别种只执行一次

    ​ module:在模块中只执行一次

    ​ class: 在类级别种只执行一次

    ​ function: 在函数界别中只执行一次

conftest.py

import pytest

# fixture 预置函数
@pytest.fixture(scope='function')
def fun1():
    return "func1"

test_case.py

def testApi(func1):
    return "success"

"""会执行上面的func1函数,在执行testApi"""

不适用配置文件:

def setup_function():
    return "some"
def teardown_function():
    return "some"

def setup_moudle():
    return "some"
def teardown_moudle():
    return "some"

...

``

不适用配置文件:

def setup_function():
    return "some"
def teardown_function():
    return "some"

def setup_moudle():
    return "some"
def teardown_moudle():
    return "some"

...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值