问题标签 [unittest2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1113 浏览

python - 在一系列 Python 版本中支持 unittest2 功能的最 Pythonic 方式是什么?

我可以想到两种方法来确保我可以在各种 Python 版本中使用 unittest 库中的现代特性:

或者

其中哪一个更 Pythonic?

0 投票
4 回答
1145 浏览

django - Django unittests - 配置不当的错误

我正在尝试为我的模块编写测试。当我运行时:

我收到消息:

我还没有任何测试,只有 BaseTest,我在其中创建用户、组和分配权限。

问题可能出在哪里?服务器正常工作,配置似乎不错。我需要定义测试设置吗?


行。我想我知道问题出在哪里:] 我有存储在其他模块中的权限列表。所以我在写from module.perms import perms(普通的python列表)。看起来,python 所做的不仅仅是将该列表从其他模块导入到我的模块中。这就是失败的原因。

解决方案: 列表定义后的环绕代码:

那么一切都应该运行良好。

0 投票
3 回答
508 浏览

python - 如何在鼻子下进行进口的“提前退货”?

我正在为一个大型 Python 项目策划大量单元测试。我们使用鼻子来做我们的测试发现和执行。我有一些测试文件确实不应该在某些条件下运行。例如,也许我有一个永远不应该在 Windows 上运行的测试模块(仅在 Mac 和 Linux 上)。

以下是我使用过的一些解决方案:

  1. 使用 Nose 优秀的属性插件标记测试方法或类。
  2. 在测试方法或类上使用unittest.skipIf()
  3. 例如,使用鼻子的模式排除来跳过windows名称中的文件。

我对 1 和 2 的抱怨是这些迫使我导入模块,这至少是浪费时间,并且如果存在依赖于平台的导入,可能会导致错误。我不喜欢#3,因为我觉得它很脆弱,并且在阅读测试用例时不容易看出它会被跳过。这三个似乎都过度依赖于测试和测试运行器之间的交互,我想要一些只是在测试中的东西。

我想在测试模块的顶部执行以下操作:

如何告诉 Python 或 Nose 停止读取模块,但没有错误?我想我正在寻找相当于提前退货的进口商品。

0 投票
2 回答
771 浏览

python - 有没有办法在 py 文件中添加元数据以对测试进行分组?

假设我在不同的文件中有以下测试用例

  • TestOne.py {标签:一,二}
  • TestTwo.py {标签:两个}
  • TestThree.py {标签:三}

每个都继承自 unittest.TestCase。python 有没有能力在这些文件中嵌入元数据信息,这样我就可以有一个 main.py 脚本来搜索这些标签并只执行那些测试用例?

例如:如果我想用 {tags: Two} 执行测试用例,那么只有测试用例 TestOne.py 和 TestTwo.py 应该被执行。

0 投票
1 回答
364 浏览

nose - 解决python中运行unittest的方式太多产生的困惑

我正在尝试实现一种完整而干净的测试 python 包的方法,一种适合以下要求的方法:

  • 在干净的机器上执行测试而不设置它们(virtualenv)
  • 从多个平台收集结果
  • 从多个 python 解释器收集结果
  • 代码覆盖率(将多次执行的结果合并到一个报告中)
  • 能够生成 xml 代码覆盖率报告,以便构建系统可以跟踪这种变化随时间的变化。
  • 能够启用基于平台的禁用测试
  • 在测试之前运行几个命令,例如 pep8 或 autopep8
  • 并行运行测试。

我用了几种方法:nose + pytesttox + pytest但最近发现pytest应该可以做大部分的东西。

主要问题是我无法找到关于何时使用一种或另一种方法更好的明确比较。

有人可以解释这些并给出这些配置的一些用例或限制吗?...只是为了清楚说明您何时采用一种或另一种方法。

最后,我确实想要这些选项:

  • quicktest- 在本地运行测试,每次提交前必须这样做
  • fulltest- 完整的测试,在所有可用平台上运行它们,这是发布新版本之前的必备条件
0 投票
0 回答
2699 浏览

python - Python unittest:如何使用带参数的 setUpClass() 和 tearDownClass()

我想使用带有参数的 python unittest setUpClass 和 tearDownClass 方法。更具体地说,这是我现在正在做的事情:

它可以工作,但现在我想将缓存管理包装在 Validation 的子类中,以避免使用全局变量并每次都编写 setUpClass 和 tearDownClass。

这当然不起作用,因为 setUpClass() 和 tearDownClass() 不接受参数。有什么解决办法吗?

0 投票
1 回答
615 浏览

python - Pyunit 运行测试和构建报告

我在一个文件 test_file.py 下有一组测试。我可以像这样从控制台正常运行它:

当测试用例失败时,这会输出一个小的回溯。所以我需要做的正是。

  1. 定期运行测试,比如说在 crontab 上(我知道怎么做)
  2. 每次运行后发送电子邮件报告,为了做到这一点,我需要知道所有测试是否正常,以防其中一些失败,哪些失败以及错误是什么,就像正常的 pyunit 输出一样。

正如我上面所说,我知道如何做 cron 部分,我知道如何运行测试,但是我需要什么或者我能做些什么来完成第 2 项?

也许是一个手动运行每个测试并收集结果然后发送电子邮件的脚本?

非常感谢 !

0 投票
7 回答
67925 浏览

python - 如何从“python setup.py test”运行 unittest discover?

我试图弄清楚如何python setup.py test运行相当于python -m unittest discover. 我不想使用 run_tests.py 脚本,也不想使用任何外部测试工具(如noseor py.test)。如果该解决方案仅适用于 python 2.7 就可以了。

setup.py中,我认为我需要在配置中的test_suite和/或test_loader字段中添加一些内容,但我似乎找不到正确工作的组合:

这是否可能仅使用unittest内置于 python 2.7 中?

仅供参考,我的项目结构如下所示:

更新:这是可能的,unittest2但我想找到等效的东西unittest

来自https://pypi.python.org/pypi/unittest2

unittest2 包括一个非常基本的 setuptools 兼容测试收集器。在 setup.py 中指定 test_suite = 'unittest2.collector'。这将使用包含 setup.py 的目录中的默认参数启动测试发现,因此它可能是最有用的示例(请参阅 unittest2/collector.py)。

目前,我只使用了一个名为 的脚本run_tests.py,但我希望通过转向仅使用python setup.py test.

这是run_tests.py我希望删除的:

0 投票
1 回答
3175 浏览

python - 如果首选 names_with_underscores,为什么使用 unittest2 方法 camelCase?

这是 PEP8 中描述函数名称的部分:

函数名称应为小写,必要时用下划线分隔单词以提高可读性。

混合大小写仅在已经是主流样式的情况下才允许使用

他们为什么不更改函数名称?这对于没有保持向后兼容性的 Python 3 尤其重要。

0 投票
0 回答
54 浏览

python - 如何在不同平台上使用不同的测试包

我来自 C++ 背景,我的 Python 知识非常有限,我需要以下情况的帮助:

背景:

我们有一个软件SF,它被集成到一个大型系统S中,这个系统S使用 pythonunittest2作为测试框架(但是经过调整)。具体来说,它实现了一个类A,该类继承自unittest2另一个定制的异常处理类B。然后基于A. 系统S仅在 Linux 上可用。然而,这个软件SF也被用作一个独立的应用程序,它应该只unittest2在我们在其他平台上测试它时使用,在这种情况下类A是不可用的。

问题:
我如何在不同的平台上应用不同的测试包?

我可能的解决方案:
我正在考虑基于这个线程实现一个包装类:创建一个包装类来调用现有函数的前置和后置函数?. 该帖子的答案如下:

但是,我认为上面的线程不太相关,因为它处理的是类成员函数的包装器,而我想要一些包装器类来包装不同的测试包。是否有可能在 Python 中做到这一点?我正在使用 Python 2.7 仅供参考。

非常感谢任何输入,如果有助于使自己清楚,我很乐意添加更多信息。谢谢你。