我成功地昨晚跑了一个版本.我今天早上起床并运行另一个而不更改任何配置或修改任何源代码.现在我的构建与失败的消息"没有源代码"运行时我nosetests与覆盖范围.
NoSource: No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/tests/unit/util.py'
. . .
No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/__init__.py'
Run Code Online (Sandbox Code Playgroud)
我唯一的线索是,它说它找不到的文件不存在,但它们从来没有,它们不应该是.例如,在后者中,Hudson的工作区不是Python模块,因此__init__.py
不会存在.
更新:我已经确认这不是哈德森问题.当我在目录本身运行带有覆盖的nostests时,我看到类似的消息.再一次,覆盖范围正在寻找的文件从来没有开始,这使得这非常令人费解.
你如何从pycharm执行nosetest来运行所有的单元测试?
我知道pycharm支持python的unittest和py.test,并且他们将在pycharm 1.1中正确支持nosetests,但我想知道是否有解决方法.
我正试图在我的计算机上安装鼻子来学习"学习Python困难之路"教程,但似乎无法让它工作.我正在使用pip安装:
$ pip install nose
Run Code Online (Sandbox Code Playgroud)
我回来了:
Requirement already satisfied (use --upgrade to upgrade): nose in /usr/local/lib/python2.7/site-packages
Cleaning up...
Run Code Online (Sandbox Code Playgroud)
但是,当我运行命令nosetests时,我得到:
-bash: nosetests: command not found
Run Code Online (Sandbox Code Playgroud)
我认为我的PATH有问题,老实说我不知道.任何帮助将不胜感激!
有没有办法计算由nosetests运行的单个Python测试的执行时间?
我的项目文件夹(是的 - 我知道这是最好的做法)是这样的:
.
??? app.py
??? otherscript.py
??? tests/
??? tools/
??? __init__.py
??? toolfile.py
Run Code Online (Sandbox Code Playgroud)
我需要nose --with-coverage
测试.py
主文件夹,tools
文件夹中的脚本并排除tests
文件夹(虽然我真的不在乎排除它)
当我运行基本
nose --with-coverage
Run Code Online (Sandbox Code Playgroud)
我得到了所有安装的依赖项和库(烧瓶,请求等)的报道
我跑的时候
nose --with-coverage --cover-package=folder name (or . or ./)
Run Code Online (Sandbox Code Playgroud)
我得到了测试文件夹的覆盖范围.该tools/__init__.py
文件,app.py
但不包括其余脚本:
> (opentaba-server) D:\username\pathto\opentaba-server>nosetests --with-coverage -- cover-package=./ ... Name
> Stmts Miss Cover Missing
> ----------------------------------------------------------------------- Tests\functional_tests\test_return_json 26 0 100%
> Tests\unit_test\test_createdb 0 0 100%
> Tests\unit_test\test_scrape 0 0 100% app
> 63 15 76% 22, 24, …
Run Code Online (Sandbox Code Playgroud) 我有一个抽象的基类:
class MyAbstractClass(object):
__metaclass__ = ABCMeta
@abstractproperty
def myproperty(self): pass
Run Code Online (Sandbox Code Playgroud)
但是当我在我的项目中运行nosetests(覆盖率)时,它会抱怨属性def line未经测试.它实际上无法测试(AFAIK),因为抽象类的实例化将导致异常被引发.
有没有解决方法,或者我只需要接受<100%的测试覆盖率?
当然,我可以删除ABCMeta
用法并简单地提升基类NotImpementedError
,但我更喜欢前一种方法.
我的SUT看起来像:
foo.py
bar.py
tests/__init__.py [empty]
tests/foo_tests.py
tests/bar_tests.py
tests/integration/__init__.py [empty]
tests/integration/foo_tests.py
tests/integration/bar_tests.py
Run Code Online (Sandbox Code Playgroud)
当我跑步时nosetests --with-coverage
,我得到了我宁愿忽略的各种模块的细节.但是我不能使用该
--cover-package=PACKAGE
选项,因为foo.py
&bar.py
不在包中.(请参阅http://lists.idyll.org/pipermail/testing-in-python/2008-November/001091.html之后的帖子,
以了解我没有将它们放入包中的原因.)
我可以将coverage输出限制为foo.py和bar.py吗?
更新 - 假设没有比下面的Nadia更好的答案,我问了一个跟进问题:"如何编写一些(bash)shell脚本将目录中所有匹配的文件名转换为命令行选项? "
我的应用程序依赖于request.remote_addr
这是None
当我运行通过使用nosetests测试app.test_client().post('/users/login', ....)
.
当我运行测试时,如何模拟IP(127.0.0.1正常工作)? 我已经尝试设置环境变量,使用post()方法发送头文件,我已经通过nosetests,werkzeugs和flaskks文档进行了挖掘,但我尝试过的任何工作都没有.
我尝试过"nosetests p1.py> text.txt"并且它无法正常工作.
管道此控制台输出的正确方法是什么?
我希望将Nose用于线上集成测试套件.但是,其中一些测试的执行顺序很重要.
那就是说,我想我会把一个快速的插件拼凑起来用我想要它执行的命令来装饰测试:https://gist.github.com/Redsz/5736166
def Foo(unittest.TestCase):
@step(number=1)
def test_foo(self):
pass
@step(number=2)
def test_boo(self):
pass
Run Code Online (Sandbox Code Playgroud)
通过回顾我曾经想过的内置插件,我可以loadTestsFromTestCase
通过装饰的"步骤编号" 简单地覆盖和排序测试:
def loadTestsFromTestCase(self, cls):
"""
Return tests in this test case class. Ordered by the step definitions.
"""
l = loader.TestLoader()
tmp = l.loadTestsFromTestCase(cls)
test_order = []
for test in tmp._tests:
order = test.test._testMethodName
func = getattr(cls, test.test._testMethodName)
if hasattr(func, 'number'):
order = getattr(func, 'number')
test_order.append((test, order))
test_order.sort(key=lambda tup: tup[1])
tmp._tests = (t[0] for t in test_order)
return tmp
Run Code Online (Sandbox Code Playgroud)
这个方法按照我想要的顺序返回测试,但是当测试由nose执行时,它们没有按此顺序执行?
也许我需要将这种订购概念转移到不同的位置?
更新 …
nosetests ×10
python ×10
nose ×5
abc ×1
coverage.py ×1
flask ×1
pycharm ×1
python-2.7 ×1
testing ×1
unit-testing ×1
werkzeug ×1