unittest加载测试用例名称必须以test开头,是否可以定制化
前几天,在一个群里,一个人问了,这样一个问题。说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化。他不知道为啥。
看到这个题目,我回答当然可以了,可以用leizi开头。 可能你不信,那么今天雷子来给你实现下。看我说的是不是真的。那么我来实现下,我不修改前,看看用leizi开头命名的测试用例是否可以执行。
1 2 | import unittest<br> class testone(unittest.TestCase): <br> def leizi1( self ): <br> self .assertTrue( True ) <br> def leizi2( self ): <br> self .assertTrue( True ) <br> def testone( self ): <br> self .assertTrue( True )<br> if __name__ = = "__main__" : unittest.main() |
运行:
就运行了一个测试用例。leizi开头的测试用例没有执行。我要变,我要让它只执行leizi开头的测试用例。
经过我的修改,我们看下,还是上面的测试用例,我们看下执行结果
执行了两个测试用例,到底是不是leizi开头的呢,我们来打印下,看看是否执行的是leizi的用例。
import unittest
class testone(unittest.TestCase):
def setUp(self) -> None:pass
def 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2017-11-14 locust 参数,数据详解
2017-11-14 ab返回结果参数分析
2017-11-14 ab使用命令