pytest单元测试框架(集成篇)

发布时间 2023-09-15 10:04:20作者: yimu-yimu

一、@pytest.mark.parametrize()基本用法

 

@pytest.mark.parametrize(args_name,args_value)

args_name:参数名

args_value:参数值(列表[],元祖(),字典列表[{},{}],字典元祖({},{})),有多个值用例就会执行多少次

import time

import pytest


class TestApi:
    @pytest.mark.parametrize('a', ['1', '2'])  # 列表
    def test_huahua(self, a):
        time.sleep(5)
        print(a)

    # 跟unittest的ddt里面的@unpack解包的一样
    @pytest.mark.parametrize('a', [['1', '2'], ['11', '22']])
    def test_huahua1(self, a):
        time.sleep(5)
        print(a)

    @pytest.mark.parametrize('a', ('1', '2'))  # 元组
    def test_huahua2(self, a):
        time.sleep(5)
        print(a)

    @pytest.mark.parametrize('a',  [{'huahua', '4'}, {'caocao', '6'}])  # 字典列表
    def test_huahua3(self, a):
        time.sleep(5)
        print(a)

    @pytest.mark.parametrize('a', ({'huahua', '88'}, {'caocao', '66'}))  # 字典元组
    def test_huahua4(self, a):
        time.sleep(5)
        print(a)

    @pytest.mark.parametrize('a, b', [['', '4'], ['', '6']])  # 列表
    def test_chen(self, a, b):
        print(a, b)

    @pytest.mark.parametrize('a, b', [{'hua', '4'}, {'cao', '6'}, {'yun', '8'}])  # 字典列表
    def test_chen1(self, a, b):
        print(a, b)


if __name__ == '__main__':
    pytest.main(['-vs'])

运行结果:

 

 

二、YAML文件详解---实现接口自动化


1.用于全局的配置文件 ini/yaml
2.用于写测试用例(接口测试用例)

Yaml简介

 

yaml是一种数据格式,支持注释,换行,多行字符串,裸字符串(整形,字符串)。

语法规则:


1.区分大小写
2.使用缩进表示层级,不能使用tab键缩进,只能用空格(和python一样)
3.缩进没有数量的,只要前面是对其的就行。
4.注释是#

数据组成


1.Map对象,键值对  键:(空格)值


多行的写法:

msxy:
  name: 花花
  age: 18

一行的写法:

msxy: {name: 花花,age: 18}

 

2.数组(list),用一组横线开头,如:
多行的写法:

-
 msxy:
  - name: 花花
  - age: 18
-
 msjy:
  - name: xingxing
  - age: 20

 

一行的写法:

-
 msxy: [{name: 花花},{age: 18}]

 

yaml验证:验证格式对不对

验证网址:https://www.bejson.com/validators/yaml_editor/

三、yaml接口自动化实战

项目中要先安装Pyyaml


这个数据驱动太粗糙。不够
1.断言的封装。

2.allure报告的定制。
3.关键字驱动和数据驱动结合实现接口自动化测试。
4.python的反射
正常:先初始化对象,在调方法。
反射:通过对象得到类对象,然后通过类对象调用方法
5.jenkins的持续集成和allure报告集成,并且根据自动化的报告的错误率发送电子邮件。