【笔记】软件测试07——web自动化测试(unittest)

news2024/11/26 18:22:12

五)unittest框架

unittest框架是什么?为什么要使用unittest框架

  • 在unittest框架中创建测试
  • 在脚本中添加断言
  • 通过unittest框架对脚本进行管理
  • 自定义测试报告
  • unittest框架中的参数化操作

python unittest:

Selenium python unittest framework

01通过unittest框架创建测试

  1. 必须继承于unittest.TestCase类
  2. 可定义setUp和tearDown方法进行初始化,也可使用setUpClass和tearDownClass来进行初始化
  3. 所有测试方法必须以test开头。测试方法会在运行时自动被调用。(凡是以test开头的叫测试方法,否则为普通方法,但可以在测试方法中调用普通方法)
  4. 可在pycharm自带的unittest框架运行,也可以以普通的方式运行。

02Unittest测试类的运行方式:

  1. pycharm中,以python自带的unittets框架来运行测试类。

右键->Run 'Unittests for ... '

凡是显示Run 'Unittests for...'这种菜单,九表示以pycharm内置的unittest模块开运行文件,这样运行不需要任何调用方法。

eg:

setUp方法:每个测试方法执行前执行一次。

tearDown方法:每个测试方法结束后执行一次。

setUpClass方法:整改测试执行前执行一次。

TearDownClass方法:整改测试执行后执行一次。

2.作为一个普通的py文件执行,需要修改配置

如下:

 

 

运行:

eg:

import unittest
class demo(unittest.TestCase):
    def testFunc1(self):
        print('这是testLogin方法')


    def testFunc2(self):
        print('这是一个测试方法')


if __name__ == '__main__':
    print('测试已经开始,准备调用')
    unittest.main()  # 开始调用定义好的测试类

运行结果:测试已经开始,准备调用会被打印出来

03测试顺序

  1. 测试顺序是不固定的

eg:

 

2.若是要固定测试顺序 ,可以字母或数字来区分

import unittest
class demo(unittest.TestCase):
  def testFunc1(self):
    print('这是testLogin方法')


  def testFunc2(self):
    print('这是一个测试方法')

 

1)unittest的基本使用

  • 介绍
    • unittest是python自带的一个模块,可以用它进行单元测试
  • 作用
    • 以上所需selenium操作,仅仅完成了自动化测试的操作部分
    • 关于是否和预期一致的对比,可以借助unittest来完成
  • 为什么使用unittest
    • 能够阻止多个用例去执行
    • 提供丰富的断言方法
    • 提供丰富的日志与测试结果
  • 核心概念
    • TestCase

测试用例:用类的方法,组织对一个功能的多项测试

    • Fixture

夹具,用来固定测试环境

    • TestSuite

测试套件:组织多个TestCase

    • TestRunner

测试执行,用来执行TestSuite,并可以导出测试结果

    • 其他
      • TestResult :测试报告(某种格式的测试结果)
      • TestLoader :根据某一规则找到TestSuite

2)入门案例

三个步骤:

1、创建测试类

需要继承于unittest.TestCase

2、书写测试方法

需要以test开头的示例方法,且不能有参数

3、执行测试(在Pycharm可忽略)

eg:

import unittest
#1
class FirstTest(unittest.TestCase):
  #2
  def test_1(self):
    print("test_1")


  def test_2(self):
    print("test_2")  


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

3)断言

断言是自动化测试中比较预期结果和实际结果的一种方式。

自动化测试若是没有断言,只能叫做自动化操作。

1、Python的断言

  • 用法:
    1. assert逻辑表达式
    2. assert逻辑表达式,字符串
  • 说明

如果逻辑表达式为真,则继续执行

如果逻辑表达式为假,则抛出AssertionError,并包含字符串信息

2、unittest的断言

python自带的断言不够强大,只知道不成立,或者不一致,但不知道哪里不一致。

TestCase有assert开头的方法,非常强大。

断言一旦失败,是不会执行断言下面的语句,会自动停止这个方法。

方法列表:

方法

作用

好处

判断in

assert(a,b)

assertNotIn(a,b)

判断真假

assertTrue

assertFalses

判断是否相等

assertEqual

assertNotEqual

判断类型

assertIsInstancce(a,b)

assertNotIsInstance(a,b)

判断容器内容是否一致

assertListEqual(a,b)

列表是否一致

显示不同之处

assertTupleEqual(a,b)

元组是否一致

显示不同之处

assertSetEqual(a,b)

集合是否一致

显示不同之处

assertDictEqual(a,b)

字典是否一致

显示不同之处

判断小数是否相等

assertAlmostEqual(a,b)

忽略因二进制原因导致的微小误差

assertNotAlmostEqual(a,b)

忽略因二进制原因导致的微小误差

判断大小关系

assertGreater(a,b)

assertGreaterEqual(a,b)

assertLess(a,b)

assertLessEqual(a,b)

判断是否符合正则

assertRegex(s,r)

正则

assertNotRegex(s,r)

判断执行是否有异常

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

5 三个C11新特性 5.1 variadic templates 模板参数可变化&#xff0c;其语法为 ... (加在哪看情况) // 当参数pack里没有东西了就调用这个基本函数结束输出 void print() { }// 用于打印多个参数的可变参数模板函数 template <typename T, typename... Args> void pri…

10.多线程

文章目录 10.1简述线程、程序、进程的基本概念。以及他们之间关系是什么?10.2线程有哪些基本状态? 10.1简述线程、程序、进程的基本概念。以及他们之间关系是什么? 线程与进程相似&#xff0c;但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程…

在next中使用antd表格,表格使用render函数报错

Error: Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with "use server". {title: "姓名", dataIndex: "name", key: ..., render: function} 错误描述&#xff1a;使用antd的tabl…

cocos 导出微信小游戏没有app.json

app.json对应的是微信小程序 game.json对应的是微信小游戏 只需要导入项目时选择小游戏再导入项目即可

DRF的Serializer组件(源码分析)

1. 数据校验 drf中为我们提供了Serializer&#xff0c;他主要有两大功能&#xff1a; 对请求数据校验&#xff08;底层调用Django的Form和ModelForm&#xff09;对数据库查询到的对象进行序列化 示例一: 基于Serializer # models.py class UserInfo(models.Model):username…

商品执行标准和卫生标准

纸巾 纸巾纸(抽纸) 作用&#xff1a;柔韧细腻、不易掉毛掉粉&#xff0c;擦汗时不易破碎、残留&#xff0c;常用于面部的清洁。 执行标准GB/T20808 卫生标准GB15979 主要成份&#xff1a;原生木浆 质量等级&#xff1a;优等品 细菌菌落总数<200cfu/g 卫生纸(厕纸) 作用&…

Scratch 之 枪战的枪械画法

大家可以参考百度图片寻找到的AK-47图片&#xff1a;AK47图片 此处我以MK18作为参照&#xff0c;MK18的造型可以在资源中获取 资源链接&#xff1a;https://download.csdn.net/download/leyang0910/88136393 对于不必要的&#xff08;繁琐的&#xff09;线条&#xff0c;我们可…

配置vscode

配置vscode 设置相关 网址&#xff1a;https://code.visualstudio.com/ 搜索不要用百度用这个&#xff1a;cn.bing.com 1.安装中文包 Chinese (Simplified) (简体中文) 2.安装 open in browser 3.安装主题 Atom One Dark Theme 4. 安装图标样式 VSCode Great Icons 5.安装 L…

【力扣每日一题】23. 合并 K 个升序链表 暴力法-快排 8.12打卡

文章目录 题目思路代码 题目 合并 K 个升序链表 难度&#xff1a; 困难 描述&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5…

Qt6之QStackedWidget——Qt仿ToDesk(2)

一、 QStackedWidget概述 QStackedWidget也叫堆栈窗体类&#xff0c;它继承于QFrame&#xff0c;主要与QListWidget等结合使用&#xff0c;实现“一个界面多个页面切换”。 二、QStackedWidget示例 如下图&#xff0c;当点击左边 QListWidget里的菜单时&#xff0c;右边跟随切…

深入浅出流批一体理论篇——数据架构的演进

一、前大数据时代 人人都知道罗马不是一天建成的&#xff0c;但没人告诉过你罗马是怎样一天天建成的。你看见罗马时&#xff0c;它就已经是罗马了。当我进阿里时&#xff0c;正是这样的感觉。我没有经历过阿里数据架构&#xff08;包括平台工具&#xff09;从0到1的过程。我相…

计算机科学的伟大变革:从机械计算到人工智能

摘要 计算机科学作为一门学科&#xff0c;经历了几十年的发展和演变。本论文旨在探讨计算机科学领域的伟大变革&#xff0c;从最早的机械计算设备到如今的人工智能系统。通过回顾历史、分析技术进步以及展望未来&#xff0c;我们可以清晰地看到计算机科学如何塑造了现代社会&a…

Flink学习记录

可以快速搭建一个Flink编写程序 mvn archetype:generate \-DarchetypeGroupIdorg.apache.flink \-DarchetypeArtifactIdflink-quickstart-java \-DarchetypeVersion1.17.1 \-DgroupIdcom.zxx.langhuan \-DartifactIdlanghuan-flink \-Dversion1.0.0-SNAPSHOT \-Dpackagecom.zx…

SpringBoot复习:(33)WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter

WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter实现了WebMvcConfigurer接口&#xff0c;重写了一些方法&#xff0c;也就是默认对Spring Mvc进行了一些配置: 该静态类上有个**Import**注解&#xff1a; Import(EnableWebMvcConfiguration.class) 它的父类…

前端笔试题1

HTML/CSS 题1&#xff1a; 1&#xff0e;使用CSS 让该节点不可见&#xff0c;方法越多越好。 <div class"hidden">Hi</div> 使用CSS 让节点不可见的方法有以下几种&#xff1a; 把 visibility 属性设置为 hidden&#xff0c;这样元素框不会被绘制&…

伯俊ERP对接打通金蝶云星空表头表体组合查询接口与采购订单新增接口

伯俊ERP对接打通金蝶云星空表头表体组合查询接口与采购订单新增接口 数据源平台:伯俊ERP 伯俊科技&#xff0c;依托在企业信息化建设方面的领先技术与实践积累&#xff0c;致力于帮助企业实现全渠道一盘货。伯俊提供数字经营的咨询与系统实施&#xff0c;助力企业信息化升级、加…

【C++】STL初识

1.STL的基本概念 2.vector存放内置数据类型 #include <iostream> using namespace std; #include <vector> #include <algorithm>void MyPrint(int val) {cout << val << endl; }void test01() {//创建vector容器对象&#xff0c;并且通过模板参…

DP1.4接口的PCB布局布线要求

DP接口即为DisplayPort接口&#xff0c;是由视频电子标准协会发布的显示接口。DP接口将在传输视频信号的同时加入对高清音频信号传输的支持&#xff0c;并且同时支持更高的分辨率以及刷新率。DP1.4通信端口规范新标准基于DP1.3规范&#xff0c;宽度不变但加入了显示压缩流技术&…

Spring-Cloud-Loadblancer详细分析_3

前两篇文章介绍了加载过程&#xff0c;本文从Feign的入口开始分析执行过程&#xff0c;还是从FeignBlockingLoadBalancerClient.execute来入手 public class FeignBlockingLoadBalancerClient implements Client {private static final Log LOG LogFactory.getLog(FeignBlock…