问题标签 [python-unittest]

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 投票
1 回答
434 浏览

python - 在 Python 测试中比较长字符串输出时出错

我正在测试一个 Python 脚本,该脚本在执行时会抛出一堆字节(作为字符串)。

首先,我得到的结果是:

有了这个,我执行脚本并获取输出。

然后我将此结果与一个非常长的预期输出进行比较:

(这只是一个愚蠢的测试,我正在尝试让事情正常工作)。

问题:我的测试失败。调试我发现值是相等的。

谁能帮我?

谢谢!

0 投票
1 回答
823 浏览

eclipse - 将 PyUnit 输出重定向到 Eclipse 中的文件

Eclipse 中是否有内置方法可以将 PyUnit 的输出重定向到文件(~保存报告)?

0 投票
0 回答
151 浏览

django - Django 单元测试在项目范围内失败,但在应用范围内通过

我在 Ubuntu 12.10 上使用 Django 1.4 和 Python 2.7。

我有一个包含多个应用程序和数十个单元测试的项目。我们最近在使用@override_settings装饰器时遇到了一个小问题。

这是一些代码:

当测试在应用程序级别运行时,一切都会通过。

但是当我们在项目级别运行时,它会失败。

由于some stuff使用/test/media但模型方法offer.get_contect_dict()使用失败/media,这是我们的实际MEDIA_URL

MEDIA_URL我们可以更改settings/test.py文件中的 ,但这需要使用所有测试/test/media(无论如何这可能是个好主意)。

显然问题出在 Django 中core.files.storage.FileSystemStorage.__init__()——它base_url在测试套件中设置了较早的对象,但在每次测试后不会重新实例化对象(出于明显的原因),因此@override_settings实际上并没有做任何事情。

这是一个错误还是按预期工作?除了通过在to中/test/media设置MEDIA_URL常量来强制使用所有单元测试之外,还有什么优雅的解决方案建议吗?settings/test.py/test/media

0 投票
1 回答
1284 浏览

python - 当我在 Django 中运行完整的测试套件时,我收到有关缺少 MessageMiddleware 的错误

我的应用程序称为 abcapp。我在 Python 2.7 上运行 Django 1.5b1。同样的问题发生在 django 的最新主干版本中。

当我运行manage.py test abcapp我编写的所有测试通过时。

当我跑步时,manage.py test我会遇到一连串的失败。这些故障中的第一个如下所示:

测试结果如下:

与消息相反,django.contrib.messages.middleware.MessageMiddleware我的MIDDLEWARE_CLASSES. my 的值MIDDLEWARE_CLASSES如下。我在我的应用程序中使用消息没有任何问题。

任何人都可以对这个问题有所了解吗?虽然我只能运行自己的测试,但我想运行整个套件以确保适当的质量控制。

研究结果:我通过自己的测试注意到,在使用测试http Client时,没有加载任何中间件。当我尝试通过测试客户端中的 Web 请求测试我自己的中间件时,我发现了这一点。如果是这样,这是否意味着 djanog 核心中有不可测试的代码?

0 投票
1 回答
737 浏览

python - Pydev PyUnit 使用 thread.join 确保所有线程都加入时出现问题

我在使用 pydev 测试我的测试一直挂起的地方时遇到问题。我已经深入研究了这个问题,并且知道根本原因是什么。我提供了以下代码示例,可用于重现该问题。

我主要在 Centos 6.3、python 2.7、eclipse juno、pydev 2.7.1 上进行测试,但是该问题也出现在具有类似设置的 windows 7 上。

我有一个 python 脚本,它作为服务器不同线程的进程启动器运行(都在第三方库中,所以我不能退出系统的那一侧)。

为了确保所有线程都在我的 process.py 结束时完成,我有一段代码尝试在退出之前加入所有线程。

这在正常的生产代码中工作正常。

在 Eclipse 中使用 pydev 在 PyUnit 中运行测试时会出现此问题。额外的线程被添加到 python 中,导致我的测试挂起。

如果我使用 Run As -> Python Run 启动我的程序,我的代码将按预期运行并正常退出。如果我使用 Run As -> Python unit-test 启动我的程序,测试总是挂起。

如果我查看可用的线程,问题就会变得清晰。使用提供的测试代码示例,我可以看到当只是将测试作为 python 运行运行时,显示了以下线程(如预期的那样)

当我将测试作为单元测试运行时

python 添加的额外线程似乎破坏了这段代码。当我的代码尝试加入 ServerComm 或 pydev.Writer 时,它会挂起。

我知道我可以尝试不按名称加入这些线程,但是这样我正在更改生产代码来处理这个问题,我不太热衷于那个解决方案。以前有没有其他人遇到过这个问题并找到了一个好的解决方法?对此的任何帮助将不胜感激。以下是该问题的示例代码。

示例test_process.py

示例流程.py

0 投票
1 回答
119 浏览

python - pyunit 测试失败,因为当传入 5 个参数时方法只接受 4 个参数

这是我正在测试的函数的定义:

这是我的测试课

这是我的错误:

我究竟做错了什么?是否有隐含的第五个论点?是自己吗?

0 投票
1 回答
2460 浏览

python - PyUnit - 如何对某个输入运行进入无限循环的方法进行单元测试?

2011 年的一篇帖子为 NUnit 回答了这个问题: 如何对某个输入运行陷入无限循环的方法进行单元测试?

PyUnit 中是否有类似的 TimeoutAttribute 可以以相同的方式使用?

我进行了一些搜索并找到了“持续时间”,但这似乎不一样。

0 投票
5 回答
17773 浏览

python - 如何测试某个日志消息是否记录在 Django 测试用例中?

我想确保我的代码中的某个条件导致将日志消息写入 django 日志。我将如何使用 Django 单元测试框架来做到这一点?

有没有一个地方可以让我检查记录的消息,就像我可以检查已发送的电子邮件一样?我的单元测试扩展了django.test.TestCase.

0 投票
3 回答
2367 浏览

python - 调用 OS/模块级 python 函数的 Python 单元测试代码

我有一个 python 模块/脚本,它可以完成其中的一些

  1. 在脚本内的各种嵌套级别,我接受命令行输入,验证它们,应用合理的默认值
  2. 我还检查是否存在一些目录

以上只是两个例子。我试图找出测试这一点的最佳“策略”。我所做的是我在模块周围raw_input和模块中构建了包装函数os.path.exists,然后在我的测试中我覆盖这两个函数以从我的数组列表中获取输入或执行一些模拟行为。这种方法有以下缺点

  1. 包装函数只是为了测试而存在,这会污染代码
  2. 我必须记住每次都在代码中使用包装函数,而不仅仅是调用os.path.existsraw_input

有什么绝妙的建议吗?

0 投票
2 回答
1361 浏览

python - 其他模块使用的假模块

是否有可能伪造我在测试中使用的其他模块使用(导入)的模块?

示例:这是我的 test.py:

这是module1.py:

基于示例:问题是:我如何module_i_want_to_fake在 test.py中伪造