Python 连续运行单元测试或每个测试多次

2024-01-03

我编写了单元测试用例来测试我的应用程序。它按预期工作,没有任何问题。

下面是一些示例测试用例

import os
import unittest

class CreateUser(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass
    def test_send_message(self):
        #my script goes here
        print "success"
if __name__ == '__main__':
    unittest.main()

如果我运行这个测试,它会按预期执行,但是我想运行这个测试用例“N”次,

为此,我在主函数中添加了 for 循环,而且它只运行一次,我使用的代码如下

 if __name__ == '__main__':
    for i in range(1, 5):
         unittest.main()  

我也用过schedule https://pypi.python.org/pypi/schedulelib 每 10 分钟运行一次测试但没有运气

有没有办法多次运行这个测试用例或者我缺少的任何其他解决方案或任何其他连续构建工具来实现此目的?

提前致谢


首先,要小心一点。

为什么要运行相同的测试五次?我不想在没有看到你的代码的情况下做出假设,但这是一个非常严重的代码味道。单元测试必须是可重复的,如果连续运行五次所得到的结果与运行一次的结果不同,则测试中的某些内容是不可重复的。特别是,如果测试的早期运行产生了稍后运行所使用的副作用,或者涉及某种随机数,那么这两种情况都是非常糟糕的情况,需要修复而不是多次运行测试。仅根据我们这里掌握的信息,最好的建议很可能是不要多次运行该测试!

话虽如此,您有几种不同的选择。

  1. 将循环放入测试中

假设调用函数五次是有意义的,那么执行以下操作是完全合理的:

def test_function_calls(self):
    for _ in xrange(1, 5):
        self.assertTrue(f())
  1. 既然你提到了鼻标,你有一些选择参数化测试,通常包括对不同的输入值运行相同的(代码)测试。如果你使用类似的东西https://github.com/wolever/nose-parameterized https://github.com/wolever/nose-parameterized,那么你的结果可能是这样的:
@parameterized.expand([('atest', 'a', 1), ('btest', 'b', 2)])
def test_function_calls(self, name, input, expected):
    self.assertEqual(expected, f(input))

顾名思义,参数化测试通常用于检查具有多条数据的一个代码测试。如果您只想让测试运行几次,您可以有一个包含虚拟数据的列表,但这是另一个可疑的代码结构,可以追溯到我最初的观点。

附注:几乎所有“连续”构建工具都设置为触发构建/测试等。在特定条件或事件上,例如将代码提交到存储库时。对他们来说,简单地运行测试是很不寻常的不断地.

我已经尽力回答你的问题了,但我感觉缺少了一些东西。您可能想准确地澄清您想要完成的任务,以获得最佳答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 连续运行单元测试或每个测试多次 的相关文章

  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • 如何用 python 和 sympy 解决多元不等式?

    我对使用 python 和 Sympy 还很陌生 并且遇到了使用 sympy 解决多元不等式的问题 假设我的文件中有很多函数 如下所示 cst sqrt x 2 cst exp sqrt cst x 1 4 log log sqrt cst
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐

  • 在 Kivy 中显示 numpy/opencv/matplotlib 图像

    如何在 Kivy 中以标准 numpy opencv matplotlib 格式显示图像 Kivy 使用不同的图像内存布局 我不知道是哪一种 下面的代码完全可以正常工作 图像是使用 cv2 VideoCapture 捕获的 我认为图像是BG
  • Windows XP 上的 Vb6 http post 请求

    我在使用 VB6 发送 POST 请求时遇到问题 下面的代码在 Windows7 上运行正常 但在 Windows XP 上运行时没有任何运行时错误 并且发送数据包 但看起来没有在数据包中附加发布数据 我的代码是这样的 Set xmlhtt
  • 如何在 Windows 上设置 Python 2.6 的安装工具?

    有没有办法在 Windows 中安装 Setuptools for Python 2 6 而无需 exe 安装程序 目前还没有构建这个工具 Setuptools 的维护者表示 他可能需要一段时间才能实现它 有谁知道安装它的方法吗 第一个选项
  • 获取StorageFolder中的文件数量

    我正在使用 Windows Phone 8 1 RT 应用程序 我想知道如何获取StorageFolder 内的文件数量 我知道我们可以使用StorageFolder GetFilesAsync 然后检查返回的列表的计数 但由于此方法花费的
  • SSIS 配置连接字符串

    我的一些包裹遇到了问题 基本布局是连接字符串存储在数据库中的 SSIS 配置表中 我最近注意到 oledb 连接的服务器名称似乎保持静态 我看到过将包从一个环境移动到另一个环境时验证失败的情况 如果我将密码更改为第一个环境中使用的密码 它将
  • 获取一个返回两个整数的函数

    我正在编写一个函数 我希望它返回两个整数作为结果 但是 我无法让它做到这一点 有人可以帮助我吗 这是我最好的镜头 public static int calc int s int b int c int d int g if s g ret
  • 如何打印悬空指针以进行演示?

    我试图向某人解释为什么他们有一个悬空指针以及 free 实际上是如何工作的 指针是值 因此是按值传递的 但为此我认为我需要一种打印指针的方法t 不确定 就像这样printf p ptr memcpy 可以解决这个问题吗 char buf1
  • 警告消息:在文件中(文件,“rt”)[重复]

    这个问题在这里已经有答案了 我在尝试着将 CSV 文件导入到项目图表中 我在用着RMac OS X 上的 2 15 2 第一种方式尝试过 我尝试运行以导入 CSV 文件的脚本是这样的 group4 lt read csv XXXX csv
  • hbase 作为 Web 应用程序中的数据库

    关于在真实的 Web 应用程序中使用 hadoop 或相关技术的一个大问题 我只是想了解 Web 应用程序如何使用 hbase 作为其数据库 我的意思是 这是大数据应用程序所做的事情 还是他们使用普通数据库并仅使用这些技术进行分析 拥有一个
  • 从 C# 代码中访问 $(SolutionDir) 和 $(DevEnvDir) 等预构建宏的简单方法是什么?

    现在我正在考虑在预构建事件中写入文件的路径 然后在代码中读取该文件 但我想知道是否有更简单更优雅的方法 编辑 这是一种后续行动帮助一步构建所有项目 安装程序 NET WiX https stackoverflow com questions
  • 使用seaborn包关闭jointplot上的边际分布轴

    我喜欢这个特定的绘图以及将函数传递给 stat func 关键字以快速绘制和可视化变量之间关系的能力 但有一点 如何 关闭 或不绘制边际分布轴 它看起来不错 但有时我不想要这个功能 例如使用以下代码 import numpy as np i
  • 用于插入的 Guava 缓存侦听器

    我们会发现拥有一个非常有用AddListener补充RemovalListener在谷歌番石榴中 有没有合适的替代品AddListener这将补充RemovalListener 您可以自己提供 只需将您的自定义侦听器传递到您的计算即可Fun
  • TTimer.OnTimer 事件处理程序是可重入的吗?

    我的应用程序中有一个 TTimer 每 2 秒触发一次并调用我的事件处理程序 HandleTimerEvent HandleTimerEvent 函数会修改共享资源 并且在返回之前可能需要 10 秒的时间来执行 此外 我有时会在事件处理程序
  • 我可以将一个枚举限制为另一个枚举的某些情况吗?

    假设我有一家面包店和原料库存 enum Ingredient case flower 1 case sugar 2 case yeast 3 case eggs 4 case milk 5 case almonds 6 case choco
  • 应用商店连接操作错误资产验证失败

    您好 我在使用 xCode 上传存档时遇到此错误 有人以前遇到过这个错误吗 谢谢 我从 Organizer 导出 IPA 并使用运输车 https apps apple com tr app transporter id1450874784
  • 如何使用 Zend\Form\Factory 在 ZF2 字段集中设置过滤器和验证器?

    我使用 Zend Form Factory 在 zend Framework2 中创建表单 factory new Zend Form Factory factory gt createForm array elements gt arra
  • 是否可以使用函数进行 regexp_replace ?

    我想对字符串中的值进行一些计算 最后替换它们 Oracle 正则表达式似乎很好 但 1 在所有计算结束时都会被评估 所以我想知道在将其传递给函数之前是否可以进行评估 set serveroutput on declare l foo var
  • 如何在TextView上斜划线

    有没有简单的方法如何在 TextView 上绘制斜删除线 现在我正在使用这段代码 textview setPaintFlags textview getPaintFlags Paint STRIKE THRU TEXT FLAG But I
  • 将预测张量转换为图像

    使用tensorflow js 我已成功导入模型并从中返回预测 接下来我想将该预测从张量转换为图像 我的第一个想法是去张量 gt js 数组 gt 一些画布情况 不过 我敢打赌有一种更简单的方法可以做到这一点 希望不必涉及节点 但我对此持开
  • Python 连续运行单元测试或每个测试多次

    我编写了单元测试用例来测试我的应用程序 它按预期工作 没有任何问题 下面是一些示例测试用例 import os import unittest class CreateUser unittest TestCase def setUp sel