自动化测试框架中Pytest使用规则及参数化

本文介绍了Pytest的使用规则,包括测试文件命名规范、断言方式、运行命令以及特殊函数如前置后置脚本。此外,详细讲解了测试用例的参数化、执行顺序控制、冒烟测试、跳过测试等高级特性。通过示例代码展示了如何进行测试方法的标记、条件跳过和从YAML文件读取参数。最后,提到了pytest.ini配置文件对测试的影响。
摘要由CSDN通过智能技术生成

自动化测试框架中Pytest使用规则及参数化

  1. 使用pytest规则
  1. 测试文件以test_开头(以_test结尾也行)
  2. 测试类以Test开头,并且不能带有init方法
  3. 测试函数以test_开头
  4. 断言使用基本的assert即可
  1. 运行

# coding:utf-8

import pytest

class Test:

    def test_01(self):
        print('第一条用例')
        assert 1==1

    def test_02(self):
        print('第二条用例')
        assert 2==3

if __name__ == '__main__':
    pytest.main()

  1. main  pytest.main

加参数

-s 结果显示出来

-v 详细的结果显示出来

# 多个测试文件时,main方法中输入文件名来指定运行的文件
pytest.main(['-v','-s','py_test.py'])

  1. 终端中运行命令  pytest py_test.py
  1. 特殊函数
  1. 测试方法的前置后置脚本

def setup(self):
    print('单个测试方法的前置脚本')

def teardown(self):
    print('单个测试方法的后置脚本')

  1. 整个测试类中的前置后置脚本

def setup_class(self):
    print('类的前置脚本')

def teardown_class(self):
    print('类的后置脚本')

  1. 同一文件中有多个测试类时,整体的前置、后置脚本

# coding:utf-8

import pytest

def setup_module():
    print('整个模块的前置脚本')

def teardown_module():
    print('整个模块的后置脚本')

class Test:

    def setup_class(self):
        print('类的前置脚本')

    def teardown_class(self):
        print('类的后置脚本')

    def setup(self):
        print('单个测试方法的前置脚本')

    def teardown(self):
        print('单个测试方法的后置脚本')

    def test_01(self):
        print('第一条用例')
        assert 1==1

    def test_02(self):
        print('第二条用例')
        assert 2==3

class Test2:

    def test_01(self):
        print('第一条用例')
        assert 1==1

if __name__ == '__main__':
    # 多个测试文件时,main方法中输入文件名来指定运行的文件
    pytest.main(['-v','-s','py_test.py'])

  1. 执行顺序
  1. 默认从上到下顺序执行
  2. mark标记

@pytest.mark.run(order=1)
def test_01(self):
    print('第一条用例')
    assert 1==1

@pytest.mark.run(order=3)
def test_02(self):
    print('第二条用例')
    assert 2!=3

@pytest.mark.run(order=2)
def test_03(self):
    print('第三条用例')
    assert 3==3

  1. 冒烟测试

mark标记  mark.smoke

@pytest.mark.smoke
def test_03(self):
    print('第三条用例')
    assert 3==3

mark后的标记可以随便写,写完后在文件中配置pytest.ini文件

[pytest]
markers=smoke

运行   加入’-m’,’名字’

pytest.main(['-v','-s','-m','smoke','py_test.py'])

  1. 跳过

skip

@pytest.mark.skip
def test_03(self):
    print('第三条用例')
    assert 3==3

加条件跳过

@pytest.mark.skipif(1>2,reason='1不大于2所以不跳过')
def test_03(self):
    print('第三条用例')
    assert 3==3

pytest.ini 修改后可以生效新的规则

 

  1. 测试用例参数化

# 读取数据后循环执行
@pytest.mark.parametrize('date',[{'a':2222,'b':333},{'c':21}])
def test_01(self,date):
    print('2个测试类中一条用例')
    print(date)
    assert 1==1

# 从文件中读取数据后循环执行
@pytest.mark.parametrize('date', read_yaml(file_path='../testDate/createtask.yaml')['第一个'])
def test_02(self, date):
    print('2个测试类中一条用例')
    print(date)
    assert 1 == 1

  1. 读取yaml文件的方法

import yaml

file_path ='../testDate/createtask.yaml'

def read_yaml(file_path):
    file = open(file_path, 'r', encoding='utf-8')
    data = yaml.load(stream=file, Loader=yaml.FullLoader)
    print(type(data))
    print(data)
    return data

  1. Yaml文件

第一个:
 taskname: 第一个任务名
 comment: 第一个描述
第二个:
 taskname: 2个任务名
 comment: 2个描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值