小编nbb*_*nbb的帖子

仅使用jenkins对已更改的行/文件运行pylint

目前,我正在使用Jenkins的违规插件生成PEP8违规报告.由于我只是开始使用此检查,因此存在数量疯狂的违规行为.因此,我想首先检查拉取请求中的更改.

当一个pull请求打开时,我使用github pull request builder来测试pull请求,我也想使用pylint(或等效的)来检查样式.

我使用此命令为jenkins生成我当前的pylint报告

pylint -f parseable ‘/var/lib/ci_server/workspace/pylint_check’ | tee pylint.out
Run Code Online (Sandbox Code Playgroud)

上面的命令将扫描整个项目,而不仅仅是拉取请求中的更改.

我也试过用这个:

git diff-index —name-only HEAD | grep .py | xargs pylint -f pylint -f parseable | tee pylint.out
Run Code Online (Sandbox Code Playgroud)

^此命令运行构建,但在我的拉取请求中产生0违规...看起来我的拉请求以分离的HEAD状态显示(我假设git diff在此上下文中不再起作用?)

这里的总体目标是使用Jenkins扫描拉动请求中的变化中的样式违规...我已经把头发拉了几天了.任何帮助都会非常棒,欢呼!

python git pylint pull-request jenkins

11
推荐指数
1
解决办法
2691
查看次数

模拟用户输入()

我正在尝试模拟我将要使用的 python 脚本的用户输入py.test。下面是一些代表我想要完成的基本代码:

def ask():
    while True:
        age = input("Enter your age: ")
        if int(age) < 13:
            print("You are too young")
        else:
            name = input("Enter your name: ")
            break
    print("Welcome!")
Run Code Online (Sandbox Code Playgroud)

我想模仿用户输入并读取输出。一个例子可能是这样的:

@mock.patch('builtins.input', side_effect=['11'])
def test_invalid_age():
    ask()
    assert stdout == "You are too young"
Run Code Online (Sandbox Code Playgroud)

我也听说这flexmock可能是内置模拟unittest系统的更好替代方案,但此时我会采取任何解决方案。

更新:

我玩了更多,并进行了一个测试:

@mock.patch('builtins.input', side_effect=['11'])
def test_bad_params(self, input):
    ask()
    output = sys.stdout.getline().strip()
    assert output == "You are too young"
Run Code Online (Sandbox Code Playgroud)

当我运行 py.test 我得到这个结果:

E StopIteration /usr/lib/python3.3/unittest/mock.py:904:
StopIteration
Run Code Online (Sandbox Code Playgroud)

它确实捕获了适当的标准输出调用“你太年轻了”。

python testing input mocking flexmock

3
推荐指数
1
解决办法
3768
查看次数

将自定义选项传递给 .save Rails 以跳过验证

我希望在尝试保存时将逻辑传递给模型以禁用特定验证。

我知道其他解决方案,例如这个:跳过模型中的某些验证方法 这涉及在我想避免的模型上放置一个临时属性。

我宁愿有一个最终看起来像这样的解决方案:

@my_model.save(:skip_name_validation => true)
Run Code Online (Sandbox Code Playgroud)

^ Rails 3 中可能有这样的事情吗?

validation model ruby-on-rails skip

1
推荐指数
1
解决办法
729
查看次数