unittest和pytest

unittest终端运行方法
ecshop_login.py

import unittest


class EcshopLoginTest(unittest.TestCase):
    def test01_baidu(self):
        print("百度")

    def test01_bytedance(self):
        print("字节跳动")

终端运行
python -m unittest ecshop_login.EcshopLoginTest -v

python -m unittest -v ecshop_login.EcshopLoginTest -k *_bytedance

python -m unittest -v ecshop_login.EcshopLoginTest -k dance

python ecshop_login.py

用例执行顺序
按ASCII码的规则【0-9 A-Z a-z】

ecshop_login.py

import unittest

class EcshopLoginTest(unittest.TestCase):
    def test01_baidu(self):
        print("百度")

    def test01_bytedance(self):
        print("字节跳动")

    def test11_alibaba(self):
        print("阿里巴巴")
if __name__ == '__main__':
    unittest.main()

输出顺序:百度 字节跳动 阿里巴巴

ecshop_login.py

import os
import unittest
class EcshopLoginTest(unittest.TestCase):
    def test1_baidu(self):
        print("百度")

    def test2_bytedance(self):
        print("字节跳动")

    def test11_alibaba(self):
        print("阿里巴巴")

if __name__ == '__main__':
    print("++++++++++++++++++++++++++")
    suite = unittest.TestSuite()
    testcase = unittest.defaultTestLoader.discover(start_dir=os.getcwd(), pattern='ecshop*.py')
    suite.addTests(testcase)
    unittest.main(defaultTest='suite')

#输出阿里巴巴 百度 字节跳动

ecshop_login.py

import unittest
class EcshopLoginTest(unittest.TestCase):
    def test1_baidu(self):
        print("百度")

    def test2_bytedance(self):
        print("字节跳动")

    def test11_alibaba(self):
        print("阿里巴巴")

if __name__ == '__main__':
    suite = unittest.TestSuite()
    testcase = [EcshopLoginTest("test1_baidu")]
    suite.addTests(testcase)
    unittest.main(defaultTest='suite')
#输出百度

ecshop_login.py

import unittest
class EcshopLoginTest(unittest.TestCase):
    def test1_baidu(self):
        print("百度")

    def test2_bytedance(self):
        print("字节跳动")

    def test11_alibaba(self):
        print("阿里巴巴")

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(EcshopLoginTest('test1_baidu'))
    suite.addTest(EcshopLoginTest('test2_bytedance'))
    unittest.main(defaultTest='suite')  #unittest.TextTestRunner().run(suite)
#输出百度 字节跳动

Json格式
yaml_test.yaml

-
 大厂: [{name: '阿里巴巴'},{name: '字节跳动'},{name: '美团'}]
 大公司: [{name: '百度'},{name: '腾讯'},{name: '京东'}]

yaml_util.py

import yaml

class YamlUtilTest:
    def __init__(self,yaml_path):
        self.yaml_path = yaml_path

    def read_yaml(self):
        with open(self.yaml_path,encoding='utf-8') as f:
            yaml_data = yaml.load(stream=f.read(),Loader=yaml.FullLoader)
            return yaml_data

if __name__ == '__main__':
    yaml_util = YamlUtilTest('yaml_test.yaml').read_yaml()
    print(yaml_util)#输出[{'大厂': [{'name': '阿里巴巴'}, {'name': '字节跳动'}, {'name': '美团'}], '大公司': [{'name': '百度'}, {'name': '腾讯'}, {'name': '京东'}]}]

yaml_test.yaml

-
  name: 获取接口统一鉴权码token接口
  request:
    method: GET
    url: https://api.weixin.qq.com/cgi-bin/token
    data:
      grant type: client_credential
      appid: wx6b11b3efd1cdc290
      secret: 106a9c6157c4db5f6029918738f9529d
  validate:
    - equals: {status code: 200}
    - contains: access token

gzh_case.py

import requests
from ddt import file_data, ddt

@ddt
class GzhTestCase(unittest.TestCase):

    @file_data('yaml_test.yaml')
    def test_get_token(self,**kwargs):
        if 'name' in kwargs.keys() and 'request' in kwargs.keys() and 'validate' in kwargs.keys():
            if jsonpath.jsonpath(kwargs,'$..url') and jsonpath.jsonpath(kwargs,'$..data') and jsonpath.jsonpath(kwargs,'$..method'):
                res = requests.get(url=kwargs['request']['url'],params=kwargs['request']['data'])
                print("res的值是:",res.json())
                print("validate",kwargs['validate'])

                for validate_data in kwargs['validate']:
                    print("validate_data:",validate_data)
                    for key,value in validate_data.items():
                        print('key=',key,'value=',value)
                        if key == 'equals':
                            pass
                        elif key == 'contains':
                            if value in res.text:
                                print("断言通过")
                            else:
                                print("断言失败",'value=',value)
            else:
                print("关键字不包含url或data或method")
        else:
            print("关键字必须包含name,request,validate")

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

只运行test_login.py:
test_login.py

import pytest

class TestLogin:
    def test_login(self):
        print('-----test_login')


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

方法一:终端运行pytest test_login.py
方法二:新建all.py并运行

all.py如下:

import pytest

if __name__ == '__main__':
    pytest.main(['test_login.py'])

pytest测试用例的运行方式
1.主函数模式
(1)运行所有:pytest.main()
(2)指定模块:pytest.main([‘test_login.py’])
(3)指定目录:pytest.main([‘./interface_testcase’])
(4)指定方法:pytest.main([‘./interface_testcase/test_interface.py::test_01’])
2.命令行模式:
(1)运行所有:pytest
(2)指定模块:pytest test_login.py
(3)指定目录:pytest ./interface_testcase
(4)指定方法:pytest ./interface_testcase/test_interface.py::test_01

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/919486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 (5)数据通信的基础知识

前言 数据通信是一种以信息处理技术和计算机技术为基础的通信方式,它通过数据通信系统将数据以某种信号方式从一处传送到另一处,为计算机网络的应用和发展提供了技术支持和可靠的通信环境,是现代通信技术的关键部分。 一、数据通信的基本概念…

【操作系统笔记】目录

【操作系统笔记】操作系统框架https://blog.csdn.net/Resurgence03/article/details/142624262 【操作系统笔记】CPU管理https://blog.csdn.net/Resurgence03/article/details/142621526 【操作系统笔记】内存管理https://blog.csdn.net/Resurgence03/article/details/142669…

linux之调度管理(7)-SMP cpu 的spin-table启动

一、smp启动总体介绍 soc在启动阶段除了一些特殊情况外(如为了加快启动速度,在bl2阶段通过并行加载方式同时加载bl31、bl32和bl33镜像),一般都没有并行化需求。因此只需要一个cpu执行启动流程即可,这个cpu被称为primar…

基于Java Springboot活力健身馆管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

BERT-TFBS:一种基于 BERT 的新型模型,通过迁移学习预测转录因子结合位点

转录因子(TF)是通过结合 DNA 序列中的转录因子结合位点(TFBS)来调控基因转录所必需的蛋白质。准确预测 TFBS 有助于设计和构建基于 TF 的代谢调控系统。尽管已经开发了各种用于预测 TFBS 的深度学习算法,但预测性能仍有…

前端pdf预览方案

前端pdf预览方案 pdf预览一般不需要前端生成pdf文件,pdf文件一般是通过接口,获取pdf文件【responseType:‘blob’,】或二进制文件流【responseType: ‘arraybuffer’,】或者已有的pdf文件。 前端PDF预览通常是通过读取现有的PDF文件,并使用…

得物彩虹桥架构演进之路-负载均衡篇

文 / 新一 一、前言 一年一更的彩虹桥系列又来了,在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级,目前新架构已经部署完成,生产环境正在逐步升级中&#xf…

Python3.11.9+selenium,获取图片验证码以及输入验证码数字

Python3.11.9+selenium,获取图片验证码以及输入验证码数字 1、遇到问题:登录或修改密码需要验证码 2、解决办法: 2.1、安装ddddocr pip install ddddocr 2.2、解析验证码函数 import ddddocr def get_capcha_text():#获取验证码图片ele_pic = driver.find_element(By.XPAT…

23种设计模式-状态(State)设计模式

文章目录 一.什么是状态模式?二.状态模式的结构三.状态模式的应用场景四.状态模式的优缺点五.状态模式的C实现六.状态模式的JAVA实现七.代码解释八.总结 类图: 状态设计模式类图 一.什么是状态模式? 状态模式(State Pattern&…

Chroma致茂Chroma61815回收式电网模拟电源

Chroma致茂 Chroma61815回收式电网模拟电源 产品特色 功率规格: 61809:9kVA 61812:12kVA 61815:15kVA 电压规格:0~350V 频率规格:30Hz~100Hz/DC 3U高度具备最大15kVA之高功率密度设计 全触控面板搭配直观的…

基于STM32的智能语音识别饮水机系统设计

功能描述 1、给饮水机设定称呼,喊出称呼,饮水机回答:我在 2、语音进行加热功能,说:请加热,加热片运行 3、饮水机水位检测,低于阈值播报“水量少,请换水” 4、检测饮水机水温&#xf…

Hadoop 学习心得

一、引言 (一)学习 Hadoop 的背景和目的 随着信息技术的飞速发展,数据量呈爆炸式增长,传统的数据处理方式已难以满足需求。在这样的背景下,为了能够在大数据领域有所发展,我开始学习 Hadoop。Hadoop 作为处…

使用Mybatis向Mysql中的插入Point类型的数据全方位解析

1. 结果 希望每一个能够看到结果的人都能自己装载进去!加油! 2.代码 2.1TestMapper import org.apache.ibatis.annotations.*; import java.util.Date; import java.util.List;/*** author Administrator*/ Mapper public interface TestMapper {/*…

阿里云轻量应用服务器可以用在哪些场景呢

在数字化转型的浪潮中,中小企业面临着如何快速、高效地上云的挑战。阿里云轻量应用服务器(SWAS)作为一款专为中小企业设计的云服务产品,提供了简单易用、经济实惠的解决方案,助力企业轻松实现云端部署,赋能…

【桌面应用程序】Vue-Electron 环境构建、打包与测试(Windows)

前言 Vue 与 Electron 环境构建、打包与测试。 目录 前言 一、基本环境准备 二、配置npm源 三、创建Vue项目 四、添加Electron支持 五、应用启动 ​六、添加UI框架 ElementUI ​七、打包 一、基本环境准备 npm版本:8.6.0node版本:v18.0.0Vue/…

【SQL】E-R模型(实体-联系模型)

目录 一、介绍 1、实体集 定义和性质 属性 E-R图表示 2. 联系集 定义和性质 属性 E-R图表示 一、介绍 实体-联系数据模型(E-R数据模型)被开发来方便数据库的设计,它是通过允许定义代表数据库全局逻辑结构的企业模式&#xf…

Linux下安装NVIDIA显卡驱动(全流程通俗教程)

1、确认显卡型号 查明你的NVIDIA显卡型号,以确保下载驱动程序的版本: lspci | grep -i vga 2、下载NVIDIA驱动 前往官方网站:NVIDIA官网 选择显卡信息:使用下拉菜单选择正确的显卡型号、Linux操作系统和系统架构。 下载驱动…

视频里的音频怎么提取出来成单独文件?音频提取照着这些方法做

在数字时代,视频与音频的分离与重组已成为日常需求之一。无论是出于制作背景音乐、保存讲座内容,还是编辑播客素材,提取视频中的音频并将其保存为单独文件都显得尤为重要。视频里的音频怎么提取出来成单独文件?本文将详细介绍几种…

【Vue笔记】基于vue3 + element-plus + el-dialog封装一个自定义的dialog弹出窗口组件

这篇文章,介绍一下如何使用vue3+element-plus中的el-dialog组件,自己封装一个通用的弹出窗口组件。运行效果如下所示: 目录 1.1、父子组件通信 1.2、自定义VDialog组件(【v-model】模式) 1.2.1、编写VDialog组件代码 1.2.2、使用VDialog组件 1.2.3、运行效果 1.3、自…

python: generator IDAL and DAL using sql server 2019

其它数据库也是一样的思维方式 create IDAL # encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : P…