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

​        

        前几天,在一个群里,一我的问了,这样一个问题。说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化。他不知道为啥。python

        看到这个题目,我回答固然能够了,能够用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()

  

 

        运行:ruby

        就运行了一个测试用例。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()

    结果:spa

    

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

咱们能够看到有这个TestProgram这个里面的,有这么一个函数,那么咱们对应的去看看这个里面的方法  。blog

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

    

 

这里咱们能够看到 是一个类,这里有个定义的 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()

 

    结果:

    

        只执行了leizi开头的,咱们修改为功了。

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

        

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

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

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

        题目惟一,方案变幻无穷。

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

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

 

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

    若是你感受有用,能够收藏,分享给你们。帮助你们一块儿成长。

    有问题也能够和我交流。qq&微信:952943386

    

相关文章
相关标签/搜索