首页 技术 正文
技术 2022年11月9日
0 收藏 957 点赞 3,164 浏览 1702 个字

前几天,在一个群里,一个人问了,这样一个问题。说他面试遇到一个面试官,问他,为啥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()

  


运行:

unittest加载测试用例名称必须以test开头,是否可以定制化

就运行了一个测试用例。leizi开头的测试用例没有执行。我要变,我要让它只执行leizi开头的测试用例。

经过我的修改,我们看下,还是上面的测试用例,我们看下执行结果

unittest加载测试用例名称必须以test开头,是否可以定制化

执行了两个测试用例,到底是不是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加载测试用例名称必须以test开头,是否可以定制化

打印的结果与预期完全一致。那么雷子是怎么做到的,我先来给你解析一下。首先我们使用的unittest.main()加载运行的测试用例,我们可以去找这个main方法,在源码中可以发现

unittest加载测试用例名称必须以test开头,是否可以定制化

我们可以看到有这个TestProgram这个里面的,有这么一个函数,那么我们对应的去看看这个里面的方法  。

unittest加载测试用例名称必须以test开头,是否可以定制化

默认加载的是defaultTestLoader,那么我去看看这里面有没有我们想要的。

unittest加载测试用例名称必须以test开头,是否可以定制化

这里我们可以看到 是一个类,这里有个定义的 test,我们看看。接下来是怎么用的。

unittest加载测试用例名称必须以test开头,是否可以定制化

我们可以搜索下,在这个类里面下面有一个获取测试用例名称的,这个地方判断了 测试用例名称调用了这个值,我们可以改下试试,testMethodPrefix的值改成leizi试试。还是上面的测试函数。

import  unittestclass 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()

结果:

unittest加载测试用例名称必须以test开头,是否可以定制化

只执行了leizi开头的,我们修改成功了。

回到上面这个面试题。我们在面试的时候都会遇到这种情况,其实这个时候我们如果没有做过或者看过源码,可以回答,在我目前的得到的知识中,就是以test开头的,但是要是定制,我要看下源码,是否可以定制。如果你看过源码,那就直接说 我知道在哪个文件下面的 什么值可以直接修改。

面试不难,面试题也不难。

学会解答,能给出方案来。

唯有变化,应对万变题目。

题目唯一,方案千变万化。

合理思路,方案有理有据。

基于需求,给定方案即可。

关注雷子说测试,每天带你分享不一样的东西。

如果你感觉有用,可以收藏,分享给大家。帮助大家一起成长。

有问题也可以和我交流。qq&微信:952943386

unittest加载测试用例名称必须以test开头,是否可以定制化

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295