unittest框架的使用

先简单介绍一下unittest的核心组成部分:

  • 测试夹具:Test Fixture
    • 一般用于执行测试用例的准备或者清理工作,比如测试开始前的数据准备或者测试结束的数据清理等。通过setUp()、tearDown()、setUpClass()、tearDownClass()这四个钩子函数实现了测试用例的准备和清理工作。
    • setUp():在每一个测试用例执行前都会执行一次
    • tearDown():在每一个测试用例执行后都会执行一次
    • setUpClass():仅在整个测试类开始执行前执行,且必须使用@classmethod装饰
    • tearDownClass():仅在整个测试类结束执行后执行,且必须使用@classmethod装饰
  • 测试用例:Test Case
    • 是unittest的最小单元,测试用例会继承TestCase这个基类
  • 测试用例集:Test Suite
    • 又称为测试套件,可以包含一个或者多个测试用例
    • 测试用例集包括一个或多个TestSuite类,每一个TestSuite类包括一个或多个TestCase类,也可以包括其他TestSuite类。TestSuite通过addTest()方法或者addTests()方法把一个个测试用例、测试用例集组装成一个新的测试用例集。
  • 测试加载器:Test Loader
    • 用于从提供的类(class)和模块(module)中生成测试用例集,unittest默认提供一个测试加载器(Default Test Loader)
    • 测试加载器加载本地或从外部文件定义好的TestCase类或者TestSuite类
    • 默认加载以test开头的.py文件
  • 测试运行器:Test Runner
    • 用于执行测试用例和输出测试结果

unittest还支持忽略执行某些测试用例,在要忽略的测试用例上添加如下装饰器即可:

  • @unittest.skip():执行时直接忽略被装饰的测试用例
  • @unittest.skipIf():如果skipIf里的条件成立,执行时直接忽略被装饰的测试用例
  • @unittest.skipUnless():永久在执行时忽略被装饰的测试用例,除非skipUnless里的条件成立
  • @unittest.expectedFailure:期望被装饰的测试用例是失败的,如果失败的,则此条测试用例被标记为测试通过

接下来我们对上一篇文章中的pageobject三层架构中,业务层(测试用例层)的代码使用unittest框架进行改造。

test_login.py文件的代码如下:

import timefrom Module.login import Login
from selenium import webdriver
import unittest
import ddttest_data = [{"username":"test123", "password":"123456"},{"username":"test124", "password":"123456"}
]# 使用unittest框架
@ddt.ddt
class Login_test(unittest.TestCase):def setUp(self) -> None:self.driver = webdriver.Chrome()self.driver.get('https://mail.163.com')self.driver.maximize_window()def tearDown(self) -> None:time.sleep(5)self.driver.quit()@ddt.data(*test_data)def test_login(self, test_data):print(test_data)username = test_data['username']password = test_data['password']login = Login()# login.login(self.driver, 'test123', '123456')login.login(self.driver, username, password)if __name__ == '__main__':unittest.main()

在项目目录下创建一个Reports文件夹,用来存放测试报告的结果。

执行入口run.py文件的修改如下:

import time
import unittest
from Setting.Config import Test_Data_Path, Report_Path, Test_Case_Path
from TestRunner import HTMLTestRunner
import TestRunnerif __name__ == '__main__':now = time.strftime('%Y-%m-%d %H:%M:%S')# pytest.main(['-s', '-v', Test_Data_Path])suit = unittest.TestSuite()loader = unittest.TestLoader()suit.addTests(loader.discover(start_dir=Test_Case_Path))# 生成测试报告,测试报告存放地址及测试报告的名称with open(Report_Path + '/' + now + 'report.html', 'wb') as fp:runner = HTMLTestRunner(stream=fp,title='test_unittest')runner.run(suit)

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

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

相关文章

tableau基础学习2:时间序列数据预处理与绘图

文章目录 数据预处理1. 原始数据2. 合并数据集2. 创建计算字段 绘图分析1. 趋势分析2. 计算字段趋势分析 这一部分,我们记录一些分析时序趋势的分析步骤 数据预处理 1. 原始数据 原始数据是excel表格,其中包含三个Sheet页, 这里我们选择两…

ModaHub魔搭社区专访百度智能云李莅:以后所有的数据库它都会原生地支持用向量?

ModaHub魔搭社区:您是否认为,以后所有的数据库它都会原生地支持用向量? 李莅:传统数据库广义上也分好几类:一类是关系型的,一类是 NoSQL 类的,还有一类是分析型的数据库。我觉得关系型的这种数据…

Super Resolve Dynamic Scene from Continuous Spike Streams论文笔记

摘要 近期,脉冲相机在记录高动态场景中展示了其优越的潜力。不像传统相机将一个曝光时间内的视觉信息进行压缩成像,脉冲相机连续地输出二的脉冲流来记录动态场景,因此拥有极高的时间分辨率。而现有的脉冲相机重建方法主要集中在重建和脉冲相…

服务器监控可视化

IT监控可视化是一种将IT监控数据以图形化的方式呈现给用户的技术,可以帮助用户更直观、更易懂地了解IT系统的运行状况。服务器监控可视化是其中的一个重要应用场景,可以将服务器的各种性能指标以图表、仪表盘等形式展示,以便管理员更好地了解…

HTTP协议初识·中篇

加上目录,会出现导向不正确的情况,可能是bug,目录一长就容易出错? 本篇主要讲解了: 网页分离(网页代码和.c文件分离) html链接跳转 网页添加图片 确认并返回资源类型 填写正文长度属性 添加表单 临时重定向 补充知识&a…

06-限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景?【Java面试题总结】

限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景? 常见的限流算法有固定窗口、滑动窗口、漏桶、令牌桶等。 6.1 固定窗口 概念:固定窗口(又称计算器限流),对一段固定时间窗口内的请求进行…

通过ref 操作dom , 点击按钮后跳转到页面指定图片位置

滚动图片到视图 定义了一个名为 scrollToIndex 的函数,它接受一个参数 index。当按钮被点击时,这个函数会被调用,并根据传入的 index 值来滚动到对应的图片。 以 alt 来标记图片位置 alt“Tom” import { useRef } from "react";c…

国标视频云服务EasyGBS国标视频平台迁移服务器后无法启动的问题解决方法

国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频…

使用DOSBOX运行TurboC2,TC2使用graphics库绘图

Turbo C是由美国Borland公司开发的一套C语言程序开发工具,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套Turbo系列软件,如Turbo BASIC、Turbo Pascal、Turbo Prolog,这些软件很受用户欢迎 [1] 。 Turbo C集成了程序…

2022年06月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:有多少种二叉树 输入n(1<n<13),求n个结点的二叉树有多少种形态 时间限制:1000 内存限制:65536 输入 整数n 输出 答案 样例输入 3 样例输出 5 这个问题可以使用动态规划的方法来解决。我们可以定义一个数组dp,其中dp[i]表…

北京APP外包开发需要注意的问题

开发APP的过程中&#xff0c;由于开发APP需要投入大量的时间、精力和资源&#xff0c;所以在开始前一定要做好充足的准备和规划。您需要注意以下重点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…

三相PMSM的坐标变换

三相PMSM的坐标变换 三相PMSM的数学模型具有复杂性和耦合性的多变量系统。因此需要对其进行降阶和解耦变换。 Vα&#xff0c;Vb&#xff0c;Vc是自然坐标系。 Vα&#xff0c;Vβ是静止坐标系。 Vd&#xff0c;Vq是同步旋转坐标系。 自然坐标系 三相永磁同步电机的驱动电路…

计算机毕设之基于python+django+mysql的影片数据爬取与数据分析(包含源码+文档+部署教程)

影片数据爬取与数据分析分为两个部分&#xff0c;即管理员和用户。该系统是根据用户的实际需求开发的&#xff0c;贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限&#xff0c;其次是用户。管理员一般负责整个系统的运…

使用maven创建springboot项目

创建maven快速启动项目 命令行或者idea、eclipse快捷创建也可以 pom.xml下project项目下导入springboot 父工程 <!--导入springboot 父工程--> <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.bo…

CSAPP的Lab学习——AttackLab

文章目录 前言一、阶段一攻击二、阶段二攻击三、阶段三攻击四、阶段四攻击五、阶段五攻击总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招。刚刚看完CSAPP&#xff0c;真是一本神书啊&#xff01;遂尝试将它的Lab实现&#xff0c;并记录期间心酸历程。 代码下载 官方…

thinkPHP项目搭建

1 宝塔添加站点 &#xff08;1&#xff09;打开命令提示行&#xff0c;输入以下命令&#xff0c;找到hosts文件。 for /f %P in (dir %windir%\WinSxS\hosts /b /s) do copy %P %windir%\System32\drivers\etc & echo %P & Notepad %P &#xff08;2&#xff09;添加域…

html2canvas 截图空白 或出现toDataURL‘ on ‘HTMLCanvasElement或img标签没截下来 的所有解决办法

1.如果截图空白&#xff1a; 1.1以下的参数是必须要有的。 width: shareContent.offsetWidth, //设置canvas尺寸与所截图尺寸相同&#xff0c;防止白边height: shareContent.offsetHeight, //防止白边logging: true,useCORS: true,x:0,y:0,2&#xff0c;如果出现了报错 toData…

成集云 | 多维表格自动化管理jira Server项目 | 解决方案

源系统成集云目标系统 方案介绍 基于成集云集成平台&#xff0c;在多维表格中的需求任务信息自动创建、更新同步至 Jira Server 的指定项目中&#xff0c;实现多维表格中一表管理 Jira Server 中的项目进度。 维格表是一种新一代的团队数据协作和项目管理工具&…

基于深度学习网络的人员吸烟行为检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd)); rng(default)load FRCNN.mat I…

jmeter 准确的吞吐量定时器 Precise Throughput Timer

准确的吞吐量定时器使用实例&#xff1a; 说明&#xff1a;配置10个线程&#xff0c;每个线程请求200次&#xff0c;通过准确地屯托梁定时器模拟QPS为20的场景 配置测试接口参考链接 配置jmeter测试脚本&#xff0c;主要关注准确的吞吐量定时器参数配置 目延迟线程已确保目标吞…