unittest加载测试用例名称必须以test开头,是否可以定制化
前几天,在一个群里,一个人问了,这样一个问题。说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化。他不知道为啥。
看到这个题目,我回答当然可以了,可以用leizi开头。 可能你不信,那么今天雷子来给你实现下。看我说的是不是真的。那么我来实现下,我不修改前,看看用leizi开头命名的测试用例是否可以执行。
import unittest
class testone(unittest.TestCase):
def leizi1(self):
self.assertTrue(True)
def leizi2(self):
self.assertTrue(True)
def testone(self):
self.assertTrue(True)
if __name__=="__main__":
unittest.main()
运行:
就运行了一个测试用例。leizi开头的测试用例没有执行。我要变,我要让它只执行leizi开头的测试用例。
经过我的修改,我们看下,还是上面的测试用例,我们看下执行结果
执行了两个测试用例,到底是不是leizi开头的呢,我们来打印下,看看是否执行的是leizi的用例。
import unittest
class testone(unittest.TestCase):
def setUp(self) -> None:passdef tearDown(self) -> None:pass
def leizi1(self):
print("leizitest")
self.assertTrue(True)
def leizi2(self):
print("leizitest")
self.assertTrue(True)def testone(self):
self.assertTrue(True)if __name__=="__main__":
unittest.main()
结果:
打印的结果与预期完全一致。那么雷子是怎么做到的,我先来给你解析一下。首先我们使用的unittest.main()加载运行的测试用例,我们可以去找这个main方法,在源码中可以发现
我们可以看到有这个TestProgram这个里面的,有这么一个函数,那么我们对应的去看看这个里面的方法 。
默认加载的是defaultTestLoader,那么我去看看这里面有没有我们想要的。
这里我们可以看到 是一个类,这里有个定义的 test,我们看看。接下来是怎么用的。
我们可以搜索下,在这个类里面下面有一个获取测试用例名称的,这个地方判断了 测试用例名称调用了这个值,我们可以改下试试,testMethodPrefix的值改成leizi试试。还是上面的测试函数。
import unittest
class testone(unittest.TestCase):
def leizi1(self):
print("leizitest")
self.assertTrue(True)
def leizi2(self):
print("leizitest")
self.assertTrue(True)
def testone(self):
self.assertTrue(True)if __name__=="__main__":
unittest.main()
结果:
只执行了leizi开头的,我们修改成功了。
回到上面这个面试题。我们在面试的时候都会遇到这种情况,其实这个时候我们如果没有做过或者看过源码,可以回答,在我目前的得到的知识中,就是以test开头的,但是要是定制,我要看下源码,是否可以定制。如果你看过源码,那就直接说 我知道在哪个文件下面的 什么值可以直接修改。
面试不难,面试题也不难。
学会解答,能给出方案来。
唯有变化,应对万变题目。
题目唯一,方案千变万化。
合理思路,方案有理有据。
基于需求,给定方案即可。
关注雷子说测试,每天带你分享不一样的东西。
如果你感觉有用,可以收藏,分享给大家。帮助大家一起成长。
有问题也可以和我交流。qq&微信:952943386
unittest加载测试用例名称必须以test开头,是否可以定制化的更多相关文章
- Python 中 unittest 框架加载测试用例的常用方法
unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...
- unittest加载用例
diascover加载测试用例 1.discover方法里面有三个参数: -case_dir:这个是待执行用例的目录. -pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开 ...
- Unittest加载执行用例的方法总结
前言 说到测试框架,unittest是我最先接触的自动化测试框架之一了, 而且也是用的时间最长的, unittest框架有很多方法加载用例,让我们针对不同的项目,不同项目的大小及用例的多少自己选择加载 ...
- LoaderTest加载测试用例的方法总结
加载用例,可以用suite.addTest(测试类名("测试函数名"))实现,也可用过suit.addTest(loader.Loader....)实现,一下针对Loader的三个 ...
- Player启动时提示 "System.InvalidOperationException:无法加载计数器名称数据
问题 播放器意外断电重启后可能导致Player启动时报错,提示如下: 原因 这个提示一般指 Universal Player 找不到或无法设置一个Windows Performance Monitor ...
- 如何让aspnet服务加载静态资源html(我的动态网页静态化) 转
我们知道,IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件. 当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后 ...
- 服务器程序动态加载自定义jar包的过程
需求: 用过hive的都知道,可以自定义hive的一个udf jar,然后将这个jar add到hive服务端,就会加载这个jar实现用户自定义逻辑.现在的需求就是实现这么一个服务端所做的事情! 场景 ...
- 关于unittest单元测试框架中常用的几种用例加载方法
unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试.unittest模块包含了如下几个子模块: 测试用例:TestCase 测试集:TestSuite 加载用例:Test ...
- 第四篇 Integration Services:增量加载-Updating Rows
本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...
随机推荐
- python编程基础之三十四
面向对象:三大特征:封装,继承,多态 封装:隐藏对象的实现过程,对外仅仅公开接口,控制在程序中的读取和修改的访问级别 类,函数都是一种封装 属性私有化:当类里面的属性不想被外部访问,可以将这些属性设置 ...
- Spring Cloud之Hystrix
在微服务架构中,存在那么多的服务单元,若一个单元出现故障(由于网络原因或者自身原因),就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定.为了解决这样的问题, ...
- GO 第一个程序Hello world
第一个程序:HelloWorld 一.go项目工程结构 配置好工作目录后,就可以编码开发了,在这之前,我们看下go的通用项目结构,这里的结构主要是源代码相应地资源文件存放目录结构. 1.1 gopat ...
- 破阵九解:Node和浏览器之事件循环/任务队列/异步顺序/数据结构
前言 本文内容比较长,请见谅.如有评议,还请评论区指点,谢谢大家! >> 目录 开门见山:Node和浏览器的异步执行顺序问题 两种环境下的宏任务和微任务(macrotask &&a ...
- 车载导航应用中基于Sketch UI主题定制方案的实现
1.导读 关于应用的主题定制,相信大家或多或少都有接触,基本上,实现思路可以分为两类: 内置主题(应用内自定义style) 外部加载方式(资源apk形式.压缩资源.插件等) 其实,针对不同的主题定制实 ...
- Java ThreadLocal 的使用与源码解析
GitHub Page: http://blog.cloudli.top/posts/Java-ThreadLocal-的使用与源码解析/ ThreadLocal 主要解决的是每个线程绑定自己的值,可 ...
- mssql数据库提权
1.关于 “xp_cmdshell” “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写 ...
- Python之反射机制
什么是反射? 1.有时我们要访问某个变量或是方法时并不知道到底有没有这个变量或方法,所以就要做些判断.判断是否存在字符串对应的变量及方法.2.我们知道访问变量时是不能加引号的,否则会被当成字符串处理. ...
- Halcon一日一练:图像设备介绍
Halcon在设计之初就提供了完整的图像采集方案,适应了多种图像设备采集图像,以及各种不同环境的采集方案. 通常情况下,图像的采集应该是所有机器视觉项目首要解决的任务,不幸的是,需要解决图像采集的问题 ...
- opencv::轮廓发现(find contour in your image)
轮廓发现(find contour) 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法. 所以边缘提取的阈值选定会影响最终轮廓发现结果 //发现轮廓 cv::findContours( InputO ...