首页 > 其他分享 >pytest单元测试框架(集成篇)

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

时间:2023-09-15 10:13:19浏览次数:35  
标签:集成 parametrize name 单元测试 mark pytest print def

一、@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

yaml读取知识


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

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

标签:集成,parametrize,name,单元测试,mark,pytest,print,def
From: https://www.cnblogs.com/may18/p/17702695.html

相关文章

  • pytest单元测试框架(升华篇)
    -----------------------------------Pytest框架实现一些前后置(固件,夹具)的处理,常用三种一、setup/teardown,setup_class/teardown_class所有为什么需要这些功能?比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器?classTestMay:#这个在所有的用例......
  • 持续集成环境
        ......
  • GO语言集成开发工具环境-JetBrains GoLand 2023 Mac+win版
    JetBrainsGoLand是一款由JetBrains开发的集成开发环境(IDE),专门用于Go语言的开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和测试Go代码。→→↓↓载GoLand2023mac/win版 首先,GoLand具有强大的代码编辑功能。它支持代码自动补全、语法高亮、代码导航等功能,使......
  • Java集成开发环境(IDE)-IntelliJ IDEA 2023 mac+win版
    IntelliJIDEA是一款由JetBrains开发的集成开发环境(IDE),用于Java、Kotlin和其他编程语言的开发。它是一款功能强大、灵活且易于使用的IDE,被广泛认为是Java开发的首选工具之一。→→↓↓载IntelliJIDEA2023mac/win版 首先,IntelliJIDEA2023引入了更强大的代码分析和智能提......
  • 部署openldap服务并配置jumpsever、jira、mindoc、gitlab、jenkins集成ldap认证
    背景公司各种信息化系统越来越多,需要记住的用户账号也越来越多,人员入职离职就要分别在不同的各种系统上进行添加和删除比较繁锁,急需要一个可以统一认证的服务,于是就开始研究ldap,ldap中openldap是开源的方便使用,于是花了大概2个月时间才把标题上面的这几个服务全部调通,以下记录配置......
  • pytest单元测试框架
    单元测试有java:junit/testingpython:unittest/pytest 单元测试框架1.测试发现2.测试执行3.测试判断4.测试报告 一、pytest简介1.pytest是一个非常成熟的python的单元框架,比unittest更灵活。2.pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动......
  • 软件测试|详解 Pytest 参数化:简化测试用例的编写
    简介Pytest是一个广泛使用的Python测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍Pytest的参数化功能以及如何使用它来简化测试用例的编写。参......
  • pytest的setup和teardown
    setup和teardown函数可以分别在每个测试用例之前和之后执行,以确保测试环境的准备和清除工作。通过合理使用这两个函数,您可以有效地提高测试效率,并且避免测试用例之间的相互干扰。 Pytest-setup和teardown执行用例肯定有些需要前置条件或后置操作,例如前置的用户登陆,后置的清......
  • springboot集成CAS客户端实现单点登录
    pom中引入依赖<!--cas--><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.6.2</version></dependen......
  • 七牛云存储____官方SDK集成开发
    packagecom.scdn.qnscdn;/***七牛常理配置**@authorGod待整理好配到config文件里*ACCESSKEY这是我个人申请的一个测试的号everyonecanuseingit*SECRETKEY*/publicclassQnConstant{ //设置好账号的ACCESS_KEY和SECRET_KEY publicstaticfinalS......