小编ale*_*cxe的帖子

显示python unittest结果以漂亮的表格形式显示

我正在编写一个Pythonic工具,用于验证某个系统的正确性.每个验证都是用Python编写的unittest,报告如下:

test_exclude_list_not_empty (__main__.TestRepoLists)
Assert the the exclude list is not empty ... ok
test_include_list_not_empty (__main__.TestRepoLists)
Assert the the include list is not empty ... ok
test_repo_list_not_empty (__main__.TestRepoLists)
Assert the the repo list is not empty ... ok
Run Code Online (Sandbox Code Playgroud)

在我看来,这种格式很难阅读,特别是对于非Python主义者.是否有任何报告生成器可以以漂亮的表格形式生成报告,例如:

+----------------------------------------------------------------+-----------+
| Test                                                           |  Status   |
+----------------------------------------------------------------+-----------+
| Assert the the exclude list is not empty                       |  OK       |
| Assert the the include list is not empty                       |  OK       |
| Assert the the repo list is not empty …
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing python-unittest test-reporting

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

如何在Django中触发500错误?

我正在尝试设置电子邮件错误日志记录,我想测试它.

什么是在Django中触发500错误的简单方法?令人惊讶的是,这里还没有讨论过.

python django

21
推荐指数
3
解决办法
2万
查看次数

可以用pyspider取代Scrapy吗?

我一直在广泛使用Scrapy网络抓取框架,但是,最近我发现有另一个框架/系统被调用pyspider,根据它的github页面,它是新鲜的,积极开发和流行的.

pyspider的主页列出了支持开箱即用的几件事:

  • 功能强大的WebUI,包括脚本编辑器,任务监视器,项目管理器和结果查看器

  • 支持Javascript页面!

  • 任务优先级,重试,定期和按索引页面中的年龄或标记重新抓取(如更新时间)

  • 分布式架构

这些是Scrapy本身没有提供的东西,但是,可以借助portia(对于Web UI),scrapyjs(对于js页面)和scrapyd(通过API部署和分发).

是否真的可以pyspider单独替换所有这些工具?换句话说,是pyspiderScrapy的直接替代品吗?如果没有,那么它涵盖哪些用例?

我希望我不会越过"过于宽泛"或"基于意见"的界限.

python web-crawler scrapy web-scraping pyspider

21
推荐指数
2
解决办法
6722
查看次数

scrapy:将html字符串转换为HtmlResponse对象

我有我要转换为HTML scrapy响应对象,这样我就可以使用选择一个原始的HTML串cssxpath,类似scrapy的response.我该怎么做?

python scrapy web-scraping

21
推荐指数
2
解决办法
8480
查看次数

仅当src中有更改时才运行构建

故事:

我们有一个测试人员团队致力于使用量角器为我们的内部AngularJS应用程序自动化端到端测试.以下是他们通常为"本地"测试运行的任务:

grunt.registerTask('e2e:local', [
    'build:prod',
    'connect:test',
    'protractor:local'
]);
Run Code Online (Sandbox Code Playgroud)

它运行"构建"任务,启动Web服务器并针对本地构建运行e2e测试.

build:prod任务本身被定义为:

grunt.registerTask(
    'build:prod', [
        'clean',
        'copy:all',
        'copy:assets',
        'wiredep',
        'ngtemplates',
        'useminPrepare',
        'concat',
        'ngAnnotate',
        'autoprefixer',
        'uglify',
        'cssmin',
        'copy:cssfix',
        'usemin',
        'copy:html',
        'bowercopy',
        'template:setProdVersion'
    ]
);
Run Code Online (Sandbox Code Playgroud)

在这里我们有很多子任务(它肯定可以改进,但这就是它现在的样子).

问题:

目前,构建完成大约需要25秒.而且,每当一个人运行端到端测试时,都会执行构建任务.

问题:

build:prod如果src目录中有更改,我该如何运行任务?


请注意,此处的要求是使运行测试的测试人员透明.我不希望他们记住何时需要执行构建,何时不需要.

换句话说,该过程应该是自动化的.目标是自动检测是否需要构建.

请注意,理想情况下,我希望保持构建任务不变,因此,如果通过grunt build:prod它直接调用它,则无论前一个构建的日期戳是什么,都将重建.


思考和尝试:

  • 有一个密切相关的grunt-newer,但是,因为我们有一个相当复杂的构建,clean在开始时有一个任务,我不知道如何在我的情况下应用它

  • 我也想的是,里面e2e:local的任务,手动检查文件的时间戳内distsrc,并此基础上,决定是否build:prod需要被调用.我认为这grunt-newer就是在内部做的事情

  • 我们开始使用jit-grunt它有助于提高性能

javascript build angularjs gruntjs protractor

21
推荐指数
2
解决办法
1274
查看次数

变量类型注释NameError不一致

在Python 3.6中,新的变量注释在该语言中引入.

但是,当一个类型不存在时,可能会发生两种不同的事情:

>>> def test():
...     a: something = 0
... 
>>> test()
>>> 
>>> a: something = 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'something' is not defined
Run Code Online (Sandbox Code Playgroud)

为什么不存在的类型处理行为不同?它不会潜在地导致人们忽略函数中未定义的类型吗?


笔记

尝试使用Python 3.6 RC1和RC2 - 相同的行为.

PyCharm something在函数内部和外部都突出显示为"未解析的引用".

python annotations python-3.x python-3.6

21
推荐指数
2
解决办法
521
查看次数

Scrapy非常基本的例子

嗨我在我的Mac上安装了Python Scrapy,我试图在他们的网站上关注第一个例子.

他们试图运行命令:

scrapy crawl mininova.org -o scraped_data.json -t json
Run Code Online (Sandbox Code Playgroud)

我不太明白这是什么意思?看起来scrapy原来是一个单独的程序.而且我认为他们没有一个名为crawl的命令.在示例中,它们有一段代码,它是MininovaSpider类和TorrentItem的定义.我不知道这两个类应该去哪里,转到同一个文件,这个python文件的名称是什么?

python scrapy web-scraping

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

使用selenium webdriver在windows上设置firefox二进制文件的路径

我正在尝试构建一个实用程序函数来向浏览器输出漂亮的汤代码我有以下代码:

def bs4_to_browser(data):

    from selenium import webdriver

    driver = webdriver.Firefox(path="F:\FirefoxPortable\Firefox.exe")
    driver.get("about:blank")

    data = '<h1>test</h1>'  # supposed to come from BeautifulSoup
    driver.execute_script('document.body.innerHTML = "{html}";'.format(html=data))

    return
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

TypeError at /providers/
__init__() got an unexpected keyword argument 'path'
Run Code Online (Sandbox Code Playgroud)

我正在使用win7.如何设置便携式firefox可执行文件的路径?

python firefox selenium selenium-webdriver

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

使用Selenium与Python和PhantomJS将文件下载到文件系统

我一直在努力使用PhantomJS/Selenium/python-selenium将文件下载到文件系统.我能够轻松浏览DOM并单击,悬停等.然而,下载文件非常麻烦.我尝试过使用Firefox和pyvirtualdisplay的无头方法,但这种方法效果不佳,而且速度令人难以置信.我知道CasperJS允许文件下载.有谁知道如何将CasperJS与Python集成或如何利用PhantomJS下载文件.非常感激.

python selenium download phantomjs selenium-webdriver

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

从HTML加载DOM:HTML解析器何时知道空元素何时结束

在XML中,空元素具有标记为/>的相应标记.但这并不存在于HTML中.因此,HTML解析器具有可以为空的有限元素列表.如果这样的元素有结束标记怎么办?

html html-parsing

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