首页 > 其他分享 >三、Web自动化测试(2)

三、Web自动化测试(2)

时间:2024-05-24 16:30:16浏览次数:22  
标签:Web self print pytest 测试 自动化 test zhangsan def

一、Pytest框架了解

1. unittest

unittest 是 Python 的内置测试框架,受到了 Java 中 JUnit 的启发。它提供了一个基于类的测试框架,鼓励使用面向对象的方法编写测试用例。通常,测试用例被组织在测试类中,并且测试类继承自 unittest.TestCase 类。测试方法的命名通常以 test_ 开头。unittest 提供了丰富的断言方法,用于验证预期结果与实际结果是否一致。

2. pytest

pytest 是一个更加灵活和易用的测试框架,它不仅能够运行 unittest 风格的测试用例,还支持使用简洁的语法编写测试用例。相比于 unittestpytest 更加灵活,并且对测试用例的编写提供了更多的选择。pytest 通过自动发现测试文件和测试函数来运行测试,不需要显式继承特定的类或者按照特定的命名规范。此外,pytest 提供了丰富的插件生态系统,可以扩展其功能。

关系:

pytestunittest 都是 Python 的测试框架,它们之间并没有直接的父子关系或者继承关系。你可以选择使用其中的任何一个来编写和运行你的测试用例,具体选择取决于你的偏好、项目需求以及团队约定。有些团队可能更喜欢使用 unittest,因为它是 Python 的标准库之一,而有些团队可能更喜欢使用 pytest,因为它更加灵活且易于使用。

为什么使用pytest

  • 能够组织多用例执行

  • 提供丰富的断言方法: assert a==b (a一般表示预期结果, b一般表示实际结果)

  • 能够生成测试报告

二、基本使用

  1. pip install pytest==3.10.0
  2. pytest --version

  3. pip list | findstr "pytest"

运行方式:

  命令行运行

  pytest -s 文件名

  主函数运行

  在xxx.py文件中增加主函数:

if __name__ == '__main__':
    pytest.main(["-s", "xxx.py"])
# 主函数运行方式需要先导包 import pytest

 

断言:

assert xx 判断 xx 为真
assert not xx 判断 xx 不为真
assert a in b 判断 b 包含 a
assert a == b 判断 a 等于 b
assert a != b 判断 a 不等于 b

三、setup和teardown

1.初始化(前置处理方法):
    def setup(self)
2.销毁(后置处理方法):
    def teardown(self)
3.运行于测试方法的始末, 即:运行一次测试方法就会运行一次 setup 和 teardown
import time

def add(x, y):
    return x + y

class TestPlus:
    # 获取并打印开始时间, 每个测试函数执行前都打印一次
    def setup(self):
        print("start-time:", time.time())

    # 获取并打印结束时间, 每个测试函数执行后都打印一次
    def teardown(self):
        print("end-time:", time.time())

    def test_a(self):
        assert 2 == add(1, 1)

    def test_b(self):
        assert add(1, 1) == 2

 

四、配置文件

步骤:
1.新建 scripts 模块, 测试脚本放到模块中
2.新建 pytest.ini 文件, 名称为 pytest.ini, 第一行为 [pytest], 并且补全配置项
3.命令行运行 pytest 即可

 

# pytest.ini文件
[pytest] addopts = -s testpaths = ./scripts python_files = test_*.py python_classes = Test* python_functions = test_*

 

五、数据参数化

# 数据参数化, 装饰器需要放在要传多组值的函数上
@pytest.mark.parametrize(argnames, argvalues)
# 参数:
    argnames: 参数名
    argvalues: 参数对应值, 类型必须是可迭代类型, 一般使用 list
import pytest
class TestDemo:
# 需求: 不使用数据参数化, 分别打印用户名 "zhangsan" 和 "lisi"
    def test_a(self):
        print("zhangsan")

    def test_b(self):
        print("lisi")
# 需求: 使用数据参数化 (单一参数), 修改上面的代码
    @pytest.mark.parametrize("name", ["zhangsan", "lisi"])
    def test_c(self, name):
        print(name)

 

@pytest.mark.parametrize 中,可以传递元组、列表、或者字典作为参数。

import pytest
class TestDemo:
# 需求: 使用数据参数化 (推荐用法), 分别打印2组账号和密码: zhangsan / 111111 和 lisi / 222222
#     @pytest.mark.parametrize(("username", "password"), [("zhangsan", "111111"), ("lisi", "222222")])
#     def test_c(self, username, password):
#         print(username + "-----" + password)
    @pytest.mark.parametrize("dict", [{"username": "zhangsan", "password": "111111"}, {"username": "lisi", "password": "222222"}])
    def test_d(self, dict):
        print(dict)
        print(dict["username"])
        print(dict["password"])
#("zhangsan", "111111", "13000000000", "1", "1", "30", "......")
#("lisi", "222222", "13100000000", ??????)
# 推荐的用法是用字典表示参数值
#  {"username": "zhangsan", "password": "111111"}

标签:Web,self,print,pytest,测试,自动化,test,zhangsan,def
From: https://www.cnblogs.com/meifirst/p/18211217

相关文章

  • 虚拟ECU:彻底改变汽车软件开发与测试
    汽车开发领域有着垂直性较强的一系列需求,其中最为瞩目的需求之一就是对安全高效的软件测试方法的需求。传统的汽车开发偏向使用硬件原型与真实ECU进行软件测试,但由于硬件设备往往在开发周期的中后阶段才生产完成,给汽车开发带来了成本与时间方面的挑战。最近一项研究表明,约60%的开......
  • 三、Web自动化测试(1)
    一、认识Web自动化首先看一下ChatGPT的解答:Web自动化测试涉及多个方面的知识和技能,包括以下内容:编程语言:通常使用Python、Java、JavaScript等编程语言进行自动化测试脚本的编写。掌握至少一种编程语言是必要的。Web开发技术:了解HTML、CSS、JavaScript等基本的Web......
  • centos7安装weblogic14
    Centos7安装weblogic 1、配置java环境weblogic运行依赖java环境,所以第一步先配置java环境上传、解压jdk安装包[root@bogon~]#rz-be[root@bogon~]#tar-zxvfjdk1.8.tar.gz配置java环境变量[root@bogon~]#vim/etc/profile exportJAVA_HOME=/opt/jdk1.8 exportCLASSPA......
  • Chrome DevTools攻略:深入探索Web开发利器
    在现代Web开发中,ChromeDevTools(Chrome开发者工具)已经成为了不可或缺的利器之一。它是一个强大的Web开发工具集合,提供了各种功能和功能,帮助开发人员调试、优化和改进其网站和Web应用程序。本文将深入探讨ChromeDevTools的各项功能,并介绍如何利用这些功能提升Web开发效率和......
  • 【免费Web系列】大家好 ,今天是Web课程的第五天点赞收藏关注,持续更新作品 !
     这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r课程内容SpringBootWeb入门HTTP协议Web服务器-Tomcat1.Tomcat1.1简介Tomcat服务器软件是一个免费的开源的web应用服务器。是Apache软件基金会的一个核心项目。由Apache,Sun和其他一些公司......
  • vue + websocket + speak-tts 实现推送的告警消息弹框显示在右下角并语音播报出内容
    最近接了个项目需求,给设备配置语音加弹框告警。用户登录项目后不管在哪个页面,有告警就全局在右下角消息弹框加语音播报,下面浅介绍下我在开发中的流程以及遇到的坑!!!1、首先项目中安装speak-tts语音播报插件。npminstallspeak-tts2、创建一个全局的speech.js文件,文件中引入插......
  • 软件测试-Python基础(2)
    一、内容介绍这期主要学习:循环、字符串、列表。目录如下:二、思维导图三、循环 3.1for循环3.2 continue和break   【结果】 【结果】  3.3if-esle应用用户登录系统  【结果】 3.4循环-偶数和四、字符串4.1下标(索引)4.2切片切片(slic......
  • Ollama+Open WebUI本地搭建大模型并发布公网分享好友体验AI交互
    文章目录前言1.运行Ollama2.安装OpenWebUI2.1在Windows系统安装Docker2.2使用Docker部署OpenWebUI3.安装内网穿透工具4.创建固定公网地址前言本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装OpenWebUI结合cpolar内网穿透软件,实......
  • 29.4K star! 仅需几行代码快速构建机器学习 Web 应用项目,无需前端技能!
    大家好,我是狂师!今天给大家推荐一款开源的Python库:Gradio!Gradio是一个开源的Python库,用于创建机器学习和数据科学的交互式应用和演示。项目地址:https://github.com/gradio-app/gradio1、项目介绍Gradio旨在简化展示和测试机器学习模型的过程,它允许用户通过构建漂亮的界面来......
  • 性能测试学习之路(八)—Jmeter之响应断言详解
    Jmeter使用断言的目的:在request的返回层面增加一层判断机制;因为request成功了,并不代表结果一定正确。使用断言的方法:在选择的Sampler下添加对应的断言(因为不同类型的断言检查的内容不同);配置好响应的检查内容在Jmeter的断言中,我们常使用的就是响应断言,他根据我们响应信息......