小编ale*_*cxe的帖子

为什么在执行'unittest.main()'之后python不执行任何操作?

所以,假设我有以下内容:

import unittest

class MyTests(unittest.TestCase):

  def test001(self):
    print 'This is test001'

  def test002(self):
    print 'This is test002'

if __name__ == '__main__':
  unittest.main()
  print 'Done'
Run Code Online (Sandbox Code Playgroud)

输出是:

>> This is test001
>> This is test002
>> ----------------------------------------------------------------------
>> Ran 2 tests in 0.001s

>> OK
Run Code Online (Sandbox Code Playgroud)

我想知道为什么不打印"完成"(或任何后来的东西)?

python testing unit-testing python-unittest

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

将日期从mm/dd/yyyy转换为Python中的另一种格式

我正在尝试编写一个程序,要求用户以mm/dd/yyyy格式输入日期并进行转换.因此,如果用户输入01/01/2009,程序应显示2009年1月1日.这是我的程序到目前为止.我设法转换月份,但其他元素有一个括号围绕它们,所以它显示1月[01] [2009].

date=input('Enter a date(mm/dd/yyy)')
replace=date.replace('/',' ')
convert=replace.split()
day=convert[1:2]
year=convert[2:4]
for ch in convert:
    if ch[:2]=='01':
        print('January ',day,year )
Run Code Online (Sandbox Code Playgroud)

先感谢您!

python datetime python-3.x

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

对不仅仅由数字组成的单词的Python列表理解

在高层次上,我想要完成的是:

given a list of words, return all the words that do not consist solely of digits
Run Code Online (Sandbox Code Playgroud)

我第一次想到如何做到这一点是:

import string
result = []
for word in words:
    for each_char in word:
        if each_char not in string.digit:
            result.append(word)
            break
return result
Run Code Online (Sandbox Code Playgroud)

这很好用.为了更加Pythonic,我想 - 列表理解,对吗?所以:

return [word for word in words for char in word if not char in string.digits]
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会word为每个不是数字的字符添加结果副本.所以f(['foo']),我最终得到了['foo', 'foo', 'foo'].

有没有一种聪明的方法可以做我想做的事情?我目前的解决方案是编写一个is_all_digits函数,然后说[word for word in words if not is_all_digits(word)].我的一般理解是列表推导允许这种操作是声明性的,并且辅助函数对我来说是充分的声明; 只是好奇是否有一些聪明的方法使它成为一个复合语句. …

python list-comprehension list

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

Openpyxl和隐藏/取消隐藏的Excel工作表

我有以下代码从制表符分隔的文本文件中读取数据,然后将其写入现有Excel工作簿中的指定工作表.变量"workbook","write_sheet"和"text_file"由用户输入

tab_reader = csv.reader(text_file, delimiter='\t')
xls_book = openpyxl.load_workbook(filename=workbook)
sheet_names = xls_book.get_sheet_names()
xls_sheet = xls_book.get_sheet_by_name(write_sheet)
for row_index, row in enumerate(tab_reader):
        number = 0
        col_number = first_col
        while number < num_cols:
                cell_tmp = xls_sheet.cell(row = row_index, column = col_number)
                cell_tmp.value = row[number]
                number += 1
                col_number += 1
xls_book.save(workbook)
Run Code Online (Sandbox Code Playgroud)

但是,当我在预先存在的"工作簿"上运行此代码时,"工作表"是一个隐藏的选项卡,输出将取消隐藏选项卡.我认为原因是因为openpyxl没有修改文件而是完全创建一个新文件.是否有一种简单的方法告诉python检查工作表是否被隐藏,然后根据条件是否满足输出隐藏或未隐藏的工作表?

谢谢!

python excel openpyxl

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

python:MYSQLdb.如何获取列名而不在大表中执行select*?

我想得到一个表的列名,但其中有数百万个数据.所以我不能用:

cursor.execute("SELECT * FROM table_name")
print cursor.description
Run Code Online (Sandbox Code Playgroud)

在sqlite3中,我这样做

crs.execute("PRAGMA table_info(%s)" %(tablename[0]))
for info in crs:
    print info
Run Code Online (Sandbox Code Playgroud)

但这不适用于python mysqldb.谁知道怎么做?

python mysql mysql-python

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

使用Protractor检查浏览器控制台中是否有错误

我正在使用Protractor来测试AngularJS

我想检查一下,在测试结束时没有发生未捕获的异常,并打印到浏览器控制台.

有一个简单的方法吗?

javascript testing selenium angularjs protractor

9
推荐指数
2
解决办法
5049
查看次数

如何在请求中获取页面标题

在请求中获取页面标题的最简单方法是什么?

r = requests.get('http://www.imdb.com/title/tt0108778/')
# ? r.title
Friends (TV Series 1994–2004) - IMDb
Run Code Online (Sandbox Code Playgroud)

html python html-parsing

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

Scrapy:使用特定的HTTP服务器代码捕获响应

我们有一个非常标准的Scrapy项目(Scrapy 0.24).

我想捕获特定的HTTP响应代码,例如200,500,502,503,504等.

像这样的东西:

class Spider(...):

    def parse(...):
        processes HTTP 200

    def parse_500(...):
        processes HTTP 500 errors

    def parse_502(...):
        processes HTTP 502 errors

    ...
Run Code Online (Sandbox Code Playgroud)

我们怎么做?

python scrapy web-scraping scrapy-spider

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

结合Galen和Protractor框架

故事

我们一直在广泛使用Protractor框架,并建立了一个相当大的测试代码库.我们也一直在关注Page Object模式来组织我们的测试.

最近,我们开始使用Galen框架填补视觉/布局/响应式设计测试的空白.我们非常喜欢这个框架,并希望继续使用它.

现在最大的问题是Page Objects.两个框架都有自己的定义页面对象的方法.

这是Protractor页面对象的示例:

var LoginPage = function () {
    this.username = element(by.id("username"));
    this.password = element(by.id("password"));

    this.loginButton = element(by.binding("buttonText"));
};

module.exports = new LoginPage();
Run Code Online (Sandbox Code Playgroud)

而且,这是一个示例Galen页面对象:

this.LoginPage = $page("Login page", {
    username: '#username',
    password: '#password',
    loginButton: 'button[ng-click*=login]'
});
Run Code Online (Sandbox Code Playgroud)

目前,我们正在复制定位器并重复自己 - 违反DRY原则.而且,另一个后续问题是Galen目前仅支持"by css","by id"或"by xpath"定位技术 - 这意味着页面对象不会一对一地映射.

问题

有没有办法避免重复将Protractor和Galen结合在一起的页面对象和元素定位器?

javascript selenium pageobjects protractor galen

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

如何不忘记再次将量角器转换为角度同步?

我们有一个相当庞大的测试代码库(大约10000行javascript代码),在某些情况下,我们需要关闭Protractor-to-Angular同步:

browser.ignoreSynchronization = true;
Run Code Online (Sandbox Code Playgroud)

但问题是,我们有时会忘记再次打开同步,使所有后续测试失败,原因不明,需要时间和精力进行调试.

有没有办法确保在测试中重新启用同步?

我们确实有基于静态代码的分析ESLint并执行代码审查.

testing selenium static-code-analysis protractor angular

9
推荐指数
2
解决办法
678
查看次数