小编Sco*_*ott的帖子

Python日志配置文件

在尝试实现登录到我的python项目时,我似乎遇到了一些问题.

我只是试图模仿以下配置:

Python记录到多个目标

但是,我不想在代码中执行此操作,而是希望将其放在配置文件中.

以下是我的配置文件:

[loggers]
keys=root

[logger_root]
handlers=screen,file

[formatters]
keys=simple,complex

[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s

[handlers]
keys=file,screen

[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=complex
level=DEBUG
args=('logs/testSuite.log',)

[handler_screen]
class=StreamHandler
formatter=simple
level=INFO
args=(sys.stdout,)
Run Code Online (Sandbox Code Playgroud)

问题是我的屏幕输出看起来像:
2010-12-14 11:39:04,066 - root - 警告 - 3
2010-12-14 11:39:04,066 - root - 错误 - 4
2010-12-14 11:39 :04,066 - root - CRITICAL - 5

我的文件是输出,但看起来与上面相同(尽管包含了额外的信息).但是,调试和信息级别也不会输出.

我在Python 2.7上

这是我显示失败的简单示例:

import os
import sys
import …
Run Code Online (Sandbox Code Playgroud)

python logging

32
推荐指数
4
解决办法
5万
查看次数

在PyDev中显示函数文档

我已经让Pydev运行起来了,几乎所有人都运行良好.但是我在docstrings上遇到了一些麻烦.

比方说,我有一个如下功能:

def _get_logging_statement(self):
    """Returns an easy to read string which separates items in the log file cleanly"""
    result = "\n\n#============================================="
    result += "\n#   %-80s#"(self)
    result =+ "\n\n#============================================"
    return result
Run Code Online (Sandbox Code Playgroud)

假设我已经重写了repr以正确格式化该字符串.

当我将鼠标悬停在Eclipse上时,它会向我显示完整的文档字符串.但是,完整的实现也会显示在doctsting下面.

有没有办法显示文档字符串?

python eclipse pydev code-hinting

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

Spring MVC控制器设计

我们正在将一个struts应用程序迁移到Spring MVC并利用@Controller注释将页面定向到各种方法调用.

我在确定一个好的重用策略时遇到了麻烦.

我们在许多页面中基本上都做同样的事情:

prepareView(..., ...); //Various params -- could likely be standardized

if (!allowedToView()) {
    mav.setViewName(injectedErrorPage);
}

performBusinessLogic(..., ...);  //Various params -- not seeing how to standardize

persistEntities();
finalizeView(..., ...);  // Various params -- could likely be standardized
Run Code Online (Sandbox Code Playgroud)

有哪些策略用于创建最终方法,允许开发人员"忘记"这些流程?我考虑过制作一个抽象类,但由于每种方法的不同,我真的没有办法"标准化".

例如,我们有以下内容:

@RequestMapping("params="assign", method=RequestMethod.Post)
public ModelAndView assign(@SessionAttribute(value="sessionAttr") Pojo pojo,
                           @ModelAttribute("command") CommandPojo commandPojo,
                           BindingResult result) {
    //Follows pattern above
}

@RequestMapping()
public ModelAndView filterResults(@SessionAttribute(value="sessionAttr") Pojo pojo,
                                  @RequestAttribute("requestAttr") String requestAttr,
                                  @ModelAttribute("command") CommandPojo2 commandPojo2,
                                  BindingResult result) {

    //Follows pattern above
}
Run Code Online (Sandbox Code Playgroud)

拥有最终方法需要将其分解为两个POJO(然后将调用描述性函数).我直接关注的是如何处理最终方法中的不同参数?我认为没有办法处理这种情况.

如果我们仍然可以使用受保护函数的"最终"方法,我们可以在需要时覆盖它.

java spring-mvc

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

Spring ResponseEntity

我有一个用例,我需要将PDF返回给为我们生成的用户.看来我需要做的就是在这种情况下使用ResponseEntity,但我有一些不太清楚的事情.

  1. 如何重定向用户 - 让我们假装他们没有访问此页面的权限?如何将它们重定向到单独的控制器?
  2. 我可以设置响应编码吗?
  3. 我可以在不将HttpResponse作为参数传入RequestMapping的情况下实现这两个中的任何一个吗?

我正在使用Spring 3.0.5.示例代码如下:

@Controller
@RequestMapping("/generate/data/pdf.xhtml")
public class PdfController {

    @RequestMapping
    public ResponseEntity<byte []> generatePdf(@RequestAttribute("key") Key itemKey) {
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.setContentType(MediaType.valueOf("application/pdf"));

        if (itemKey == null || !allowedToViewPdf(itemKey)) {
            //How can I redirect here?
        }

        //How can I set the response content type to UTF_8 -- I need this
        //for a separate controller
        return new ResponseEntity<byte []>(PdfGenerator.generateFromKey(itemKey),
                                           responseHeaders,
                                           HttpStatus.CREATED);
    }
Run Code Online (Sandbox Code Playgroud)

我真的很想不接受响应......到目前为止,我的控制器都没有这样做,我不想把它全部带进来.

java spring spring-mvc

13
推荐指数
2
解决办法
4万
查看次数

Selenium页面对象重用

我真的很喜欢selenium 2按照惯例推动你使用PageObjects作为POJO,然后简单地使用PageFactory来实例化这个类中的字段.

我发现限制的是我们在许多不同的页面上重用了很多元素.最大的问题是这些重用的组件在出现在不同页面时没有相同的id/name; 但是我们为每个测试运行的测试是相同的.

举个例子,我们在很多地方收集日期.因此,此示例页面对象可能是(月,日字段已删除):

public class DatePageObject {
    private WebDriver driver;

    DatePageObject(WebDriver driver) {
        this.driver = driver;
    }

    @FindBy( id = "someIdForThisInstance")
    private WebElement year;

    public void testYearNumeric() {
        this.year.sendKeys('aa');
        this.year.submit();
        //Logic to determine Error message shows up
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我可以使用下面的代码简单地测试一下:

public class Test {
    public static void main(String[] args) {
         WebDriver driver = new FirefoxDriver();
         DatePageObject dpo = PageFactory.initElements(driver, DriverPageObject.class);
         driver.get("Some URL");
         dpo.testYearNumeric();
    }
}
Run Code Online (Sandbox Code Playgroud)

我真正想做的是有一个设置,通过Spring我可以将id/name/xpath等注入到应用程序中.

有没有办法可以做到这一点,而不会失去使用PageFactory的能力?

编辑1 - 添加理想的基础级别,处理自定义定位器和工厂.

public class PageElement {
    private WebElement element;
    private …
Run Code Online (Sandbox Code Playgroud)

java unit-testing functional-testing selenium-webdriver

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

如何在SpEL中转义值?

我正在用XML编写一些SpEL语句,我无法让解析器确定何时需要转义字符.

我尝试过以下方法:

<... property="someProperty" value="#{ someBean.aMethodOnTheBean('st\'ring') }" />
Run Code Online (Sandbox Code Playgroud)

但是添加\'似乎没有逃脱单引号,我一直收到解析器异常.

有没有办法逃避这些价值观?

java spring spring-el

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

Eclipse控制台异常颜色

这看起来很简单,但我似乎无法在Eclipse中找到更改此设置的设置.

我更喜欢我的游戏机有深色和白色文字.我将打印件留给stderr作为红色默认值.

我的问题在于,当我收到异常时,它被设置为非常深蓝色,所以如果不突出显示链接,我就无法轻易看到它的文本.

我没有在控制台首选项中看到它,也没有在其他各种设置位置看到它.

java eclipse ide colors preferences

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

Geb配置

这似乎应该非常简单,但我没有看到如何访问我的GebConfig.groovy文件中的值.我尝试过以下方法:

userName = "myUserName"

properties = {
  userName = "myUserName"
}

props {
  userName = "myUserName"
}

environments {
  chrome = { 
    driver = { new ChromeDriver() }
    userName = "myUserName" //with and without {}
  }
}
Run Code Online (Sandbox Code Playgroud)

然而我似乎无法通过以下方式访问这些属性:

browser.driver.properties.userName
Run Code Online (Sandbox Code Playgroud)

我能够在配置文件中设置这些属性,然后在我的规范中访问它们吗?我似乎得到了默认的属性集,这只是系统属性.

groovy spock geb

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

JSR 303验证覆盖

在以下情况下,如何在AuthorizedUser的电子邮件中覆盖验证:

public class Account {
    @Length(min = 1, max = 100, 
            message = "'Email' must be between 1 and 100 characters in length.")
    @NotNull(message = "'Email' must not be empty.")
    protected String email;

    @Length(min = 1, max = 50,
            message = "'Name' must be between 1 and 50 characters in length.")
    private String name;
}

public class AuthorizedUser extends Account {
    @Length(min = 1, max = 40,
            message = "'Field' must be between 1 and 50 characters in length.")
    private …
Run Code Online (Sandbox Code Playgroud)

java bean-validation

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

Spring参数化/理论JUnit测试

我希望将Spring Profiles和Configurations的灵活性与JUnit测试的并行运行结合起来,JUnit测试使用ParameterizedTheories注释.有没有办法合并所有这些功能,让我的单元测试运行?

我一直遇到的问题是参数需要访问注入的bean,这是不可能的,因为使用@Parameters或@DataPoints注释的函数应该是静态的.我真的很讨厌必须将它连接到每个类甚至某个静态函数,因为我希望能够快速切换配置文件而无需更改Java代码.这可能吗?

java junit

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