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

unittest加载测试用例名称必须以test开头,是否可以定制化的更多相关文章

  1. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  2. unittest加载用例

    diascover加载测试用例 1.discover方法里面有三个参数: -case_dir:这个是待执行用例的目录. -pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开 ...

  3. Unittest加载执行用例的方法总结

    前言 说到测试框架,unittest是我最先接触的自动化测试框架之一了, 而且也是用的时间最长的, unittest框架有很多方法加载用例,让我们针对不同的项目,不同项目的大小及用例的多少自己选择加载 ...

  4. LoaderTest加载测试用例的方法总结

    加载用例,可以用suite.addTest(测试类名("测试函数名"))实现,也可用过suit.addTest(loader.Loader....)实现,一下针对Loader的三个 ...

  5. Player启动时提示 "System.InvalidOperationException:无法加载计数器名称数据

    问题 播放器意外断电重启后可能导致Player启动时报错,提示如下: 原因 这个提示一般指 Universal Player 找不到或无法设置一个Windows Performance Monitor ...

  6. 如何让aspnet服务加载静态资源html(我的动态网页静态化) 转

    我们知道,IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件. 当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后 ...

  7. 服务器程序动态加载自定义jar包的过程

    需求: 用过hive的都知道,可以自定义hive的一个udf jar,然后将这个jar add到hive服务端,就会加载这个jar实现用户自定义逻辑.现在的需求就是实现这么一个服务端所做的事情! 场景 ...

  8. 关于unittest单元测试框架中常用的几种用例加载方法

    unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试.unittest模块包含了如下几个子模块: 测试用例:TestCase 测试集:TestSuite 加载用例:Test ...

  9. 第四篇 Integration Services:增量加载-Updating Rows

    本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...

随机推荐

  1. python编程基础之十五

    二维列表 l1 = [[1, 2, 3], [4, 5, 6]] print(l1[0][0]) 列表负值 列表复制为两种:深复制,浅复制 浅复制:只复制容器,容器里的元素不产生副本,只是技术引用增加 ...

  2. BZOJ 2535: [Noi2010]Plane 航空管制2

    Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上 ...

  3. Ubuntu安装时卡死在启动界面

    上下选中Install Ubuntu后,按'e'进入编辑页面(不要按回车),删除'quiet splash'之后的"---",输入"$vt_handoff acpi_os ...

  4. sublime text插件emmet自定义模板

    首先要找到 snippets.json这个文件,路径是preferences>browse packages,看看有没有emmet目录. 如果没有,可能是您没有安装emmet插件,或者您安装了但 ...

  5. Hadoop和YARN :map+shuffle+reduce走读

    今天做了一个hadoop分享,总结下来,包括mapreduce,及shuffle深度讲解,还有YARN框架的详细说明等. v\:* {behavior:url(#default#VML);} o\:* ...

  6. [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列

    链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...

  7. 关于StreamReader的知识分享

    今天我们来简单的介绍一下StreamReader,在将StreamReader之前,我们先来了解一下他的父类:TextReader.对于TextReader,大家可能比较陌生,下面我们来看一下Text ...

  8. 微信小程序自定义弹窗(可通用)

    效果图 .wxml <cover-view class='mask' wx:if='{{isShow}}'> <cover-view class='modal'> <co ...

  9. nginx 前后端分离 代理转发,解决跨域问题

    场景 适用于公司有前端,项目采用前后端分离.类似于我们 后端 springboot 提供接口,前端专门写html调用相应的接口,解决跨域问题 配置说明 worker_processes 1; even ...

  10. 【Java必修课】四类方法删除List里面的所有null值

    1 简介 万恶的null已经折磨程序员许久了,也带来了许多难以发现却造成严重损失的NullPointerException.我们需要尽可能的避免它,有一种简单的办法就是在它进入下轮处理前,我们就把它扼 ...